带有auth_request模块的Nginxauthentication

我已经安装了auth_request模块启用nginx,但我有一个问题,当我尝试设置身份validation。 我想通过一个PHP脚本进行身份validation,当用户请求这个位置,然后nginx请求到一个PHP文件,如果响应将是2xx然后validation真如果响应将是4xx然后validation失败。

这是我现在所做的,它正在完善这件事,但我不知道如何传递php文件的参数,如用户名密码,例如: http : //example.com/live/index.php? username=test&password= 密码

这是没有这些参数的configuration。

location /live { auth_request /http_auth; } location /http_auth { proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; proxy_pass http://127.0.0.1/login.php; } 

谢谢

这里的技巧是结合auth_basicauth_request ,这里是一个例子:

 location = /api { satisfy any; auth_basic "Restricted Access"; auth_basic_user_file "/usr/local/nginx/htpasswd"; auth_request /auth; try_files $uri $uri/ /api.html; } location = /auth { proxy_pass http://localhost:8080; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; } 

你会注意到,auth_basic_user_file是存在的,你可能不需要它,但你可以留下一个空白的文件, satisfy any将接受任何成功, auth_basic将失败,但也将设置用户和密码在HTTP头中转发你的后端脚本,你可以相应地处理它们。