post_action и fastcgi
Igor Sysoev
is at rambler-co.ru
Wed Mar 29 16:18:02 MSD 2006
On Wed, 29 Mar 2006, kirill ivanov wrote:
> Если вдруг уже обсуждалось - прошу прощения, курил поиск по листу,
> ничего внятного по теме не нашел.
>
> Есть вопрос по поводу post_action. Удалось ли кому-нибудь заставить
> его работать вместе с FastCGI?
>
> Объясняю ситуацию: post_action используется для реализации антилича
> (один скрипт при обращении проверяет сессии и отдаёт
> x-accel-redirect, другой вызывается по post_action, проверяет, кто
> докачал файл, и выносит сессию из списка).
>
> Конструкция, подобная этой - не работает.
>
> location /files/ {
> internal;
> root /path/to/root/;
> set $orig_uri $uri;
> set $orig_args $args;
> set $orig_ip $remote_addr;
> set $orig_query $query_string;
> set $orig_xforw $http_x_forwarded_for;
> post_action /downloaded.php;
> }
>
> location = /downloaded.php {
> internal;
> fastcgi_param X-Orig-X $orig_xforw;
> fastcgi_param Host $host;
> fastcgi_param X-Orig-URL $orig_uri?$orig_args;
> fastcgi_param X-Bytes-Sent $body_bytes_sent;
> fastcgi_param X-Orig-Query $orig_query;
> fastcgi_param X-User-IP $orig_ip;
>
> fastcgi_pass unix:/path/to/socket/fcgi; # сокет
> fastcgi_index index.php;
> fastcgi_connect_timeout 0;
> fastcgi_send_timeout 300;
> <..дальше остальные fastcgi-параметры..>
"fastcgi_connect_timeout 0" означает, что nginx вообще не будет
ждать соединения.
> При этом, похоже, даже не происходит вызова /downloaded.php - в
> логах, по крайней мере, его нет ни в каком виде (даже в debug).
>
> Выходил из ситуации следующим образом:
>
> location = /downloaded.php {
> internal;
> proxy_pass http://10.0.0.13/lost/downloaded.php;
> # 10.0.0.13 - ip, на котором слушает nginx, т.е.
> # proxy_pass делается на себя же. чуть дальше по конфигу
> # перенаправление всех php-файлов на fastcgi.
>
> proxy_redirect off;
> proxy_pass_request_body off;
>
> proxy_set_header X-Orig-X $orig_xforw;
> proxy_set_header Host $host;
> proxy_set_header X-Orig-URL $orig_uri?$orig_args;
> proxy_set_header X-Bytes-Sent $body_bytes_sent;
> proxy_set_header X-Orig-Query $orig_query;
> proxy_set_header X-User-IP $orig_ip;
> }
>
> Ровно до момента, когда обнаружил, что post_action почему-то
> вызывается не всегда (очень много жалоб на "повисшие" сессии, хотя
> в логах ничего подозрительного). И когда обнаружил, что если делать
> nginx-у рестарт или шатдаун - сессии остаются. post_action-то
> делается на себя, что бесполезно, так как сервис выключается.
>
> В общем - что порекомендуете на этот счет? Подкручивать /dev/hands,
> или же в консерватории что-то не так? php нужен на данном
> сервисе исключительно для того, чтобы исполнять 2 коротких
> скрипта, и сильно не хочется для этого поднимать целый апач,
> хочется обойтись одним nginx-ом и php+fastcgi.
Нужен отладочный лог.
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list