Re: error_page и limit_conn

Maxim Dounin mdounin на mdounin.ru
Пт Апр 8 15:27:59 MSD 2011


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