ошибка в обработке
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