ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: proxy read timeout по GET параметру



Hello!

On Wed, Oct 03, 2012 at 06:22:26PM -0400, cat wrote:

> Приветствую. Хочу сделать proxy_read_timeout отличный от дефолтного для
> избранных пользователей, у которых начинаются проблемы с клиентом если вдруг
> бэкенды думают дольше обычного. Пользователь определяется GET параметром.
> Вот частично рабочий конфиг:
> 
> upstream serversInt {
>         server 127.0.0.1:80;
>    }
> 
>     map $arg_user $timeouts {
>         default normalTimeout;
>         vasya lowTimeout;
>     }
> 
>     server {
> 
>         listen 127.0.0.1:8080;
>         error_page 504 =200 @timeoutPage;
> 
>         error_page 598 = @$timeouts;
>         location /
>         {
>             error_page 504 =200 @timeoutPage;
>             error_page 598 = @$timeouts;
>             return 598;

Вот тут надо добавить:

              recursive_error_pages on;

Подробности см. ниже.

>         }
> 
>         location @lowTimeout
>         {
>            error_page 504 =200 @timeoutPage;
>            proxy_read_timeout 1s;
>            proxy_set_header Host $host;
>            proxy_pass http://serversInt;
>         }
> 
>         location @normalTimeout
>         {
>            error_page 504 =200 @timeoutPage;
>            proxy_read_timeout 5s;
>            proxy_set_header Host $host;
>            proxy_pass http://serversInt;
>         }
> 
>         location @timeoutPage { return 200 "<timeout/>"; }
>     }
> 
> Работает всё кроме обработки ошибки 504 при срабатывании таймаута бэкенда.
> Появляется страница с текстом '504 Gateway Time-out' и статусом 504 вместо
> ожидаемой строки <timeout/> со статусом 200. Хотя в access.log почему-то
> пишется статус 200.

После перенаправления по error_page - дополнительные 
перенаправления по error_page запрещаются.  Разрешить несколько 
перенаправлений с помощью директивы error_page можно с помощью 
директивы recursive_error_pages.

http://nginx.org/r/recursive_error_pages/ru

-- 
Maxim Dounin
http://nginx.com/support.html

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.