nginx auth_request到远程验证脚本

时间:2017-01-04 17:51:40

标签: authentication nginx

我正在尝试使用auth_request在一些内部服务器前设置一个nginx反向代理,以保护他们免受未经授权的用户的攻击。我有一个运行在192.168.1.101/scripts/auth/user.php的身份验证脚本,可以在/ auth块内访问。问题是我想使用命名位置而不是匹配URI,这样就不会有内部服务(我无法控制)与URI冲突的风险。以下作品:

server {
listen 80;
server_name private.domain.com;

location /auth {
    proxy_pass http://192.168.1.101/scripts/auth/user.php;
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
    proxy_set_header X-Original-URI $request_uri;

}

location / {
    auth_request /auth;
    proxy_pass http://internal.domain.com;
}

}

我想用@auth替换/ auth然而当我做nginx时会在重新启动时抛出错误。我已经读过修复是用仅仅IP地址替换auth位置内的proxy_pass但是当我这样做时,auth_request永远不会进入脚本。有关正确的方法来进行此配置的任何想法?

1 个答案:

答案 0 :(得分:0)

由于某些名为location的nginx限制不能用于子请求。您可以使用location = /scripts/auth/user.php { internal; proxy_pass http://192.168.1.101; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; } location / { auth_request /scripts/auth/user.php; proxy_pass http://internal.domain.com; } 配置选项阻止对身份验证位置的外部访问。试试这个配置:

sub