ошибка в обработке

Konstantin Svist fry.kun at gmail.com
Thu Aug 6 01:25:19 MSD 2009


Konstantin Svist wrote:
> Igor Sysoev wrote:
>   
>> On Fri, May 01, 2009 at 12:23:40PM -0700, Konstantin Svist wrote:
>>
>>   
>>     
>>>     server {
>>>         location /foo/bar {
>>>             proxy_pass http://backend-cluster;
>>>         }
>>>         location / {
>>>             proxy_pass http://somehost;
>>>         }
>>>     }
>>>
>>> Если запрос приходит на /foo/bar но backend-cluster не отвечает, то
>>> запрос перекидывается на somehost - который не знает как обработать
>>> запрос типа /foo/bar.
>>> **proxy_next_upstream ничего не меняет.
>>>
>>> Также без успеха пробовал добавить
>>>         location /foo {
>>>             return 403;
>>>         }
>>>     
>>>       
>> Скорее всего, используется что-то типа
>>
>>      error_page  502 504  /50x.html;
>>
>> А самого "location = /50x.html" нет, вот оно и уходит на "location /".
>>
>>   
>>     
>
> Что-то я не могу понять как правильно сделать следующее:
> * если бэкенд возвращает ошибку, использовать только nginx встроенную
> страницу
> * избежать вышеупомянутую проблему
> * на многих server-ах
>   


Не ошибка ли это nginx-а?

    # only show nginx internal pages to the user
    proxy_intercept_errors on;
    error_page 401 404 500 501 502 503 504 505 /50x.html;

    server {
        listen 80;
        location /foo/ {
            proxy_pass http://mybackend:8080;  # basic auth, returns 401
if skipped
        }
        location / {
            proxy_pass http://mybackend:8000;  # port not open
        }
    }

Если делаю запрос на /foo/, получаю 502 Bad Gateway.
Т.е. идёт запрос без пароля, 8080 отвечает 401, nginx идёт на /50x.html
но там получает 502 т.к. порт закрыт.
Почему proxy_intercept_errors не обрабатывает этот 401?








More information about the nginx-ru mailing list