post_action и fastcgi
kirill ivanov
kirill.ivanov at tel.ru
Wed Mar 29 16:02:52 MSD 2006
Здравствуйте, коллеги.
Если вдруг уже обсуждалось - прошу прощения, курил поиск по листу,
ничего внятного по теме не нашел.
Есть вопрос по поводу 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-параметры..>
При этом, похоже, даже не происходит вызова /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.
С уважением,
Кирилл Иванов
Системный администратор отдела хостинга
--
Департамент хостинг услуг nthost.ru
Телекоммуникационная компания TEL
Tel. +7 495 787-4224
Mail. helpdesk at nthost.ru
More information about the nginx-ru
mailing list