nginx auth_request错误auth请求意外状态:302发送到客户端时

时间:2016-09-23 13:48:47

标签: nginx auth-request

我对nginx很陌生,并且在auth_request方面遇到了一些麻烦。

使用以下conf

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丢失的情况下返回X-SSO-TOKEN,如果在200则会{}返回302。它没有返回proxy_pass

我认为302本身正在将它auth_request返回到.header-holder .nav .drop .drop2 li:hover { background-color: #edf3f8; opacity: 0.9; padding-left: 100%; margin-left: -100%; padding-right: 100%; } 模块,而不是关注它并返回最后一个状态代码(如果这有意义的话?)< / p>

查看这些文档http://nginx.org/en/docs/http/ngx_http_auth_request_module.html这应该有用,但我无法弄清楚。

任何帮助或指示都将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

发现了问题!

这是一个男生错误:(

我在VM中运行nginx,并且只在我的主机上为* .test.com域添加了/ etc / hosts条目。所以内部的proxy_pass调用将转到真正的auth.test.com,它返回302.在我的VM中添加主机条目后,一切正常。