我正在尝试使用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永远不会进入脚本。有关正确的方法来进行此配置的任何想法?
答案 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