2016-09-23 12 views
0

Я действительно новичок в nginx, и у меня проблемы с auth_request.nginx auth_request error auth request неожиданный статус: 302 при отправке клиенту

Со следующим конф

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 При обращении я получаю код статуса HTTP 500.

И в журнал ошибок

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 это должно работать, но я не могу Не понимаю.

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

Thanks

ответ

0

Обнаружена проблема!

Это была ошибка гимназист :(

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