nginx auth_request ошибка auth request неожиданный статус: 302 при отправке клиенту

Я действительно новичок в 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 если X-SSO-TOKEN отсутствует, и 200 если это там. Это не возвращает 302,

я думаю proxy_pass сам возвращается это 302 в auth_request модуль, а не следовать за ним и возвращать последний код состояния (если это имеет смысл?)

Глядя на эти документы http://nginx.org/en/docs/http/ngx_http_auth_request_module.html это должно работать, но я не могу понять это.

Любая помощь или указатели будут оценены.

Спасибо

1 ответ

Нашел проблему!

Это была ошибка школьника:(

Я запускал nginx на виртуальной машине, и только на своем хост-компьютере я добавил записи /etc/hosts для доменов *.test.com. Таким образом, внутренний вызов proxy_pass направлялся на настоящий auth.test.com, который возвращал 302. После добавления записей хоста в моей виртуальной машине все работало нормально.

Другие вопросы по тегам