В такой конфигурации еще интереснее:
upstream fcgi_proxy {
server 10.0.30.77:9000 max_fails=1 fail_timeout=240s; # answer more than 60 sec
server 10.0.30.77:9001 max_fails=1 fail_timeout=240s; # answer more than 60 sec
server 10.0.30.77:9002 max_fails=1 fail_timeout=240s; # answer more than 60 sec
server 10.0.30.73:9000 max_fails=1 fail_timeout=240s; # ok
}
то-есть на 3-х серверах скрипт выполняется 60 сек, 4-й - нормальный. Получаем в логах:
10.0.0.1 - - [25/Nov/2011:15:41:54 +0000] "GET /fcgi-proxy/ HTTP/1.1" 502 1205 "-" "JoeDog/1.00 [en] (X11; I; Siege 2.70)" "-" "10.0.0.77:9000, fcgi_proxy : 10.0.0.12:80 504, 502 : 404 - 30.013, 0.000 : 0.093" 30.106 SSL:-/- "gzip:-"
502 непонятно пчему и вместо ip:port подставлено имя апстрима fcgi_proxy.
10.0.0.1 - - [25/Nov/2011:15:42:25 +0000] "GET /fcgi-proxy/ HTTP/1.1" 504 1205 "-" "JoeDog/1.00 [en] (X11; I; Siege 2.70)" "-" "10.0.0.77:9000, 10.0.0.77:9001 : 10.0.0.12:80 504, 504 : 404 - 30.012, 30.003 : 0.001" 60.016 SSL:-/- "gzip:-"
10.0.0.1 - - [25/Nov/2011:15:42:26 +0000] "GET /fcgi-proxy/ HTTP/1.1" 504 1205 "-" "JoeDog/1.00 [en] (X11; I; Siege 2.70)" "-" "10.0.0.77:9000, 10.0.0.77:9001 : 10.0.0.12:80 504, 504 : 404 - 30.009, 30.001 : 0.001" 60.011 SSL:-/- "gzip:-"
вот это "10.0.0.12:80" нормальный бэкенд с апачем и в его логах:
10.0.0.1 fcgi-proxy.com 10.0.30.111 - - [25/Nov/2011:15:41:54 +0000] "GET /fcgi-proxy/ HTTP/1.0" 404 1205 "-" "JoeDog/1.00 [en] (X11; I; Siege 2.70)" /home/www/http_error/404.html 76304/676335936 - -
то-есть идет уже за ошибкой 404.
Получается, что если nginx прерывает коннект к первому, а потом ко второму fcgi серверу (оба по таймауту) , в сумме получается 30+30=60 сек, то на третий уже как бы идти нет смысла и он идет на бэкенд за ошибкой? Так?
---
Igor