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