Проблема с X-Accel-Redirect

Alex Solovey a.solovey at gmail.com
Sat Sep 12 00:44:40 MSD 2009


Имеется следующая конфигурация:
- nginx 0.8.14 в качестве proxy-сервера
- сервер приложений apache+mod_perl
- Linux 2.6.28-15-generic (Ubuntu 9.04)

Сервер приложений для некоторых запросов отдает файлы посредством 
X-Accel-Redirect. До первого такого запроса все работает нормально. Но 
как только встретился первый X-Accel-Redirect, для последующих запросов 
nginx вместо полученного от сервера приложений ответа отсылает случайным 
образом любой из предыдущих ответов. Иногда вместо нормального ответа 
приходит мусор, состоящий из склееных вместе нескольких предыдущих ответов.
Пример:
	http://x.y.z/app/foo  --> ok
	http://x.y.z/app/bar  --> ok
	http://x.y.z/app/file --> ok (здесь используем X-Accel-Redirect)
	http://x.y.z/app/bar  --> отдает file
	http://x.y.z/app/foo  --> отдает file
	http://x.y.z/app/bar  --> отдает foo
         http://x.y.z/app/file --> отдает мусор
         ... ждем время, достаточное для закрытия keep-alive ....
	http://x.y.z/app/foo  --> ok
	http://x.y.z/app/bar  --> ok
	http://x.y.z/app/foo  --> ok
	http://x.y.z/app/file --> ok (здесь используем X-Accel-Redirect)
	http://x.y.z/app/foo  --> отдает мусор

Это продолжается до закрытия keep-alive соединения. После чего всё опять 
работает нормально дл первого запроса с X-Accel-Redirect. Если 
установить keepalive_timeout 0, то проблема не возникает.

Опытным путем удалось выяснить, что проблема появилась в nginx-0.8.11; 
версии 0.7.61 и 0.8.10 работают нормально.





More information about the nginx-ru mailing list