ПРОЕКТЫ 


  АРХИВ 


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: error_page и limit_conn



Hello!

On Fri, Apr 08, 2011 at 03:08:12PM +0400, Костенко Евгений wrote:

> Всем доброго времени суток.
> 
> Есть конфиг, в котором используется limit_zone/limit_conn и proxy_pass к
> бэкенду с apache.
> Там же перехват 500-504х ошибок через error_page и переход в именованный
> locaition @error500.
> 
> limit_zone   one  $binary_remote_addr  10m;
> log_format outofsrv '"$time_local" $host $request_method $original_uri
> $remote_addr/$geoip_country_code $status/$upstream_status
> $request_time/$upstream_response_time $content_length/$body_bytes_sent
> "$http_user_agent"';
> 
> location / {
> 
>             limit_conn   one  50;
>             proxy_pass         http://127.0.0.1:80;
> 
>             error_page 500 502 503 504 =503 @error500;
>             <SKIP>
> }
> 
> location @error500 {
>             internal;

Just a side note: internal тут смысла не имеет, в именованный 
location по другому не попадёшь.

>             root /bla/bla/htdocs;
>             set $original_uri $uri;
>             rewrite ^.*$ /sorry.html break;

Just another side note: BTW, а зачем именованный location + 
rewrite, вместо

    error_page ... /sorry.html

    location = /sorry.html {
        ...
    }

?

И, BTW, для POST-запросов такая конструкция с именованным 
location'ом выдаст стандартный текст от 405-й ошибки вместо 
искомого /sorry.html.

>             access_log /bla/bla/nginx/error500.log outofsrv buffer=1m;
>             log_not_found on;
> }
> 
> Вопрос - как разделить (разложить по разным файлам) 500-504е ошибки от
> бэкенда и 503е от срабатывания limit_conn?
> Поиски в в документации и гугле не дали желанного результата. Плз, ткните
> урлом или примером.

Отделить 503 от бекенда от 503-ей от limit_conn - можно анализируя 
значение в $upstream_status (если там 503 - значит от бекенда).  
Но делать это в конфиге на if'ах - будут ужасненько, я бы не 
рекомендовал без крайней нужды.

Maxim Dounin 

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


 




Copyright © Lexa Software, 1996-2009.