Nginx结合NJS获取请求头及URL参数做拦截校验转发

1、获取请求头参数并校验

        1)Nginx和NJS安装部署看之前文章,Nginx安装NJS安装

        2)使用NJS获取请求头参数

              modify_set_headers.js

function headers_filter(r) {
    var headersVaues = r . headersIn [ 'Content-Type' ];
    var headersVaues2 = r . headersIn [ 'clientId' ];
    if  ( headersVaues2  !=  '123456789' ) 
        { 
            r . return ( 401 ,  "请求头校验不通过\n" ) ; 
        }
     r . return ( 200 ,  "请求头校验通过\n" ) ; 
}

export default {headers_filter};

        3)Ngins配置文件修改

                nginx.conf

http {
     js_import head from modify_set_headers.js;

	#设置字符集
     charset utf-8;

server {
            listen 80;

            location /headerVuese {
                js_content head.headers_filter;
            }
      }



}

        4)效果

2、获取URL参数并校验

        1)使用NJS获取URL参数

        URL_Test.js

function url_test(r){
	var url = r.variables.request_uri.split("?")[0];
	if(url.indexOf("/YunSSo/oauth/authorize") !=-1){
		var clientId = r.variables.request_uri.split("?")[1].split("=")[1].split("&")[0];
		var url = r.variables.request_uri;
		if(clientId !="123456"){
//			r.return ( 200 ,  "1\n" ) ;
			return 404;
		}else{
//			r.return ( 200 ,  "2\n" ) ;
			return 200;
		}
//		r.return ( 200 ,  "1\n" ) ;
	}else{
//		r.return ( 200 ,  "2\n" ) ;
		return 404;
	}
//	r.return ( 200 ,  url ) ;
}
export default {url_test};

        2)Ngins配置文件修改

                nginx.conf

http {
     js_import head from URL_Test.js;
     js_set $head_foo head.url_test;

	#设置字符集
     charset utf-8;
     #设置自定义异常页面
     proxy_intercept_errors on;

server {
            listen 80;
            location /YunSSo {
            	if ( $head_foo = 404 ){
            		return 404;
            	}
            	return 200 "成功!";
            }
            error_page  404  /404.html;
      }



}

        3)效果

猜你喜欢

转载自blog.csdn.net/huanglm_OneWholeLife/article/details/124105559
今日推荐