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

Alex Solovey a.solovey at gmail.com
Sun Sep 13 03:12: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