ПРОЕКТЫ 


  АРХИВ 


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: nginx/0.8.21 exited on signal 11



Hello!

On Wed, Oct 28, 2009 at 06:36:48AM -0400, Vladimir Korkodinov wrote:

> Но почему падает в http_upstream_init_request?

Потому что:

        location /crash {

            set $true 1;

            if ($true) {
                # fastcgi_pass here
                fastcgi_pass  127.0.0.1:9000;
            }

Вот тут ставится безусловный обработчик на запрос.

            if ($true) {
                # no handler here
            }

А вот тут он по прежнему стоит, но location уже другой, и 
конфигурации upstream'а в нём нет.  При срабатывании обработчика и 
попытке разыменования конфигурации upstream'а происходит SIGSEGV.

        }

> Подскажите как по другому: 
> 1. сделать ограничение по скорости для не RU.
> 2. Подключить тот coralCDN 
> Рекомендуется  конструкция вида.
> if ($http_user_agent ~ (CoralWebPrx)) { xxxx }

По if() в location можно делать безопасно две вещи:

1.  Уходить в другой location через rewrite ... last;

    if (...) {
        rewrite ... last;
    }

2.  Возвращать ошибку (по которой тоже можно при желании уходить в 
другой location, в том числе именованный):

    if (...) {
        return 404;
    }

Можно также использовать if() на уровне server{}, там он 
безопасен.

> Заметил еще одну странность.
> Есть две строки
> if ($query_string ~ (coral-no-serve)) { set $need_CDN  "1"; }
> if ($http_user_agent ~ (CoralWebPrx)) { set $need_CDN  "1"; }
> Падает при заходе с CoralWebPrx.

При двух строчках - не падает, trust me.  А вот если выше есть ещё 
какой-нибудь if (...) { proxy_pass ... } - будет падать.  Это я к 
тому что конфиги надо приводить полностью.

Впрочем, это всё ложится в приведённый выше pattern.  Этот способ 
прострелить себе ногу давно изучен и задокументирован, никакой 
новизны.  :)

Maxim Dounin



 




Copyright © Lexa Software, 1996-2009.