ngx_http_auth_request_module是是Nginx的一个验证模块,它允许您的Nginx通过发送请求到后端服务器(一般是应用服务器,例如tomcat,或者PHP等)进行请求, 并且根据请求决定是验证通过或者不通过。后端返回200 验证通过, 后端返回401或者403验证不通过。
该模块默认可以开启,可以在configure时使用--with-http_auth_request_module选项来开启
下面的配置在原有模块的基础上追加方式进行
cd Nginx-1.12.2
./configure --with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.41 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-1.1.0g \
--with-http_stub_status_module \
--with-http_auth_request_module \
--add-module=/usr/local/src/ngx_cache_purge \
--add-module=/usr/local/src/ngx_req_status \
--add-module=/usr/local/src/echo-Nginx-module \
--add-module=/usr/local/src/ngx_devel_kit-0.3.0 \
--add-module=/usr/local/src/set-misc-Nginx-module-0.31
make
make install
该模块默认可以开启,可以在configure时使用--with-http_auth_request_module选项来开启
下面的配置在原有模块的基础上追加方式进行
cd Nginx-1.12.2
./configure --with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.41 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-1.1.0g \
--with-http_stub_status_module \
--with-http_auth_request_module \
--add-module=/usr/local/src/ngx_cache_purge \
--add-module=/usr/local/src/ngx_req_status \
--add-module=/usr/local/src/echo-Nginx-module \
--add-module=/usr/local/src/ngx_devel_kit-0.3.0 \
--add-module=/usr/local/src/set-misc-Nginx-module-0.31
make
make install
测试
location /main2 { set $var main; auth_request /sub; echo "main: $var"; } location /sub { set $var sub; echo "sub: $var"; }curl -v 'http://localhost:8082/main2'
gx_auth_request模块发起的“子请求”确实是与其“父请求”共享一套 Nginx 变量的值容器。这违背了主请求”以及各个“子请求”都拥有不同的变量 的值容器副本的原则,会经常导致不少难于调试的诡异bug。诸如此类的因共享而导致的不好的“副作用”,让包括 ngx_echo,ngx_lua,以及 ngx_srcache 在内的许多第三方模块都选择了禁用父子请求间的变量共享。
参考文献 [1].http://Nginx.org/en/docs/http/ngx_http_auth_request_module.html [2].http://www.ttlsa.com/Nginx/Nginx-var-5/ [3].http://www.iigrowing.cn/Nginx_hou_duan_yan_zheng_mo_kuai_ngx_http_auth_request_module.html