我对 nginx 真的很陌生,并且在使用 auth_request 时遇到了一些麻烦。
使用以下配置
server {
listen 80;
listen [::]:80;
root /var/www/html;
index index.php;
server_name www.test.com;
error_page 401 403 = @error401;
location @error401 {
return 302 http://login.test.com;
}
auth_request /auth;
location = /auth {
internal;
proxy_pass http://auth.test.com;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
proxy_set_header Host $http_host;
if ($http_cookie ~* "sso_token=([^;]+)(?:;|$)") {
set $token "$1";
}
proxy_set_header X-SSO-TOKEN $token;
}
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
访问http://www.test.com时,我得到一个500
http 状态代码。
并在错误日志中
auth request unexpected status: 302 while sending to client, client: 172.16.8.23, server: www.test.com, request: "GET / HTTP/1.1", host: "www.test.com"
目前http://auth.test.com只返回一个401
ifX-SSO-TOKEN
缺失,200
如果它在那里。它不返回302
.
我认为它proxy_pass
本身正在将它返回302
到auth_request
模块,而不是跟随它并返回最后一个状态代码(如果这有意义吗?)
查看这些文档http://nginx.org/en/docs/http/ngx_http_auth_request_module.html这应该可以,但我无法弄清楚。
任何帮助或指示将不胜感激。
谢谢