error_page 404 для proxied request

Igor Sysoev is at rambler-co.ru
Mon Apr 18 09:08:24 MSD 2005


On Mon, 18 Apr 2005, Andrei Nigmatulin wrote:

> В Пнд, 18.04.2005, в 03:26, Dmitry Titov пишет:
>> Здравствуйте, Andrei.
>>
>> AN> Добрый день
>>
>> AN> Игорь, есть ли возможность обработать ошибку backend'a (например 404) с
>> AN> помощью директивы error_page на nginx ?
>> AN> Пробовал ее ставить на location который проксируется - не помогает :(
>>
>> У меня ошибки бэкенда обрабатываются так:
>>
>> location / {
>>   proxy_pass  ...;
>>   ...
>>   error_page  404  /errors/404.html;
>>   ...
>> }
>>
>> location /errors/ {
>>   root  /usr/local/nginx/html/;
>>   ...
>> }
>
> Очень странно. Вот мой конфиг :
>
>        location / {
>            proxy_pass  http://127.0.0.1:8001/;
>            client_max_body_size       32k;
>            client_body_buffer_size    32k;
>            proxy_connect_timeout      10;
>            proxy_send_timeout         10;
>            proxy_read_timeout         10;
>            proxy_preserve_host        off;
>            proxy_set_x_real_ip        off;
>            proxy_add_x_forwarded_for  off;
>            proxy_header_buffer_size   8k;
>            proxy_buffers              1000 8k;
>            proxy_busy_buffers_size    64k;
>            proxy_temp_file_write_size 64k;
>            error_page  404  /errors/404.gif;
>            error_page  502  /errors/404.gif;
>        }
>
>        location /errors/ {
>            root /home/www/nginx/html;
>        }
>
> на 502 ошибку (backend лежит) 404.gif выдается,
> на 404-ю - нет, выдается стандартный html "<h1>Not Found</h1>"
>
> Где я чего не понимаю ?

Для proxy сейчас нет директивы proxy_redirect_errors [on|off], аналогичной
fastcgi_redirect_errors [on|off]. Поэтому ошибки, возникающие при работе
с бэкендом, обрабатываются директивой error_page, а ошибки, возвращаемые
бэкендом, - нет. В ближайшее время будет, сейчас я занят поддержкой
параллельного выполнения подзапросов, необходимых для SSI.

Кстати, лучше задавать

      error_page  502  =200  /errors/404.gif;

тогда MSIE не будет показывать 404.gif, как битую картинку.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list