Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
nginx незавершаетсоединениепослевыдачиответачерезinternal_redirect()?
- To: nginx-ru@xxxxxxxxx
- Subject: nginx незавершаетсоединениепослевыдачиответачерезinternal_redirect()?
- From: Igor Afanasyev <afan@xxxxxxx>
- Date: Tue, 8 Sep 2009 09:49:50 +0000 (UTC)
Всем добрый день!
Столкнулся со следующей проблемой, которая выглядит как явный баг nginx.
Конфигурация:
CentOS,
nginx/0.8.14 c perl-модулем
perl 5.8.8
Есть простейший Perl-модуль, который настроен на обработку URL определенного
типа:
=[foo.pm]==============================
package foo;
use nginx;
sub handler {
my $r = shift;
$r->internal_redirect('/foo.shtml');
return OK;
}
1; # return true
=[/foo.pm]=============================
Упрощенный site.conf (выписал те директивы, которые имеют отношение к делу):
=[site.conf]===========================
perl_modules /path/to/my/lib
perl_require foo.pm
location ~* \.xml$ {
perl foo::handler;
}
location ~* \.shtml$ {
expires -1;
ssi on;
root /var/www/html;
}
=[/site.conf]==========================
Когда делаю "wget -S http://localhost/foo.shtml", все нормально, файл отдается.
Когда делаю "wget -S http://localhost/bar.xml", nginx отдает заголовки и само
тело файла foo.shtml (условно, 500 байт -- это wget показывает), но потом
соединение не закрывается и wget ждет окончания посылки файла бесконечно (до
таймаута wget). При этом в заголовках не прописан размер файла foo.shtml.
В error_log (который у меня включен в режиме debug) видна такая картина:
=[error_log]===========================
2009/09/08 05:09:59 [notice] 29032#0: *1 "^/(.*)\.shtml$" matches "/foo.shtml",
client: XX.XX.XX.XX, server: XXXXXX.com, request: "GET /bar.xml HTTP/1.1",
host:
"XXXXXX.com:81"
=[/error_log]==========================
Т.е. internal_redirect() срабатывает, правило location срабатывает. в
access_log
при этом записи никакой не появляется (пока клиент не отвалится по таймауту).
Пробовал отключать gzip, ssi и прочее -- проблема не исчезает. Даже не знаю,
куда копать. Есть смысл ставить nginx 0.7.61?
|