nginx/0.8.21 exited on signal 11
Maxim Dounin
mdounin at mdounin.ru
Wed Oct 28 14:19:11 MSK 2009
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
More information about the nginx-ru
mailing list