У меня есть кластер Mongrel за nginx, и я пытаюсь заставить nginx обслуживать статическое содержимое моего сайта по следующему правилу (URL-адреса RESTful):
location / {
if (-f $request_filename) {
break;
}
if (!-f $request_filename) {
proxy_pass http://mycluster$request_uri;
break;
}
}
Когда я загружаю страницу, на которой есть изображения (по ссылке из / public / images), запросы на изображения просто зависают навсегда (то же самое касается JS, CSS и т. Д.). Тем не менее, если я перейду прямо к URL-адресу изображения (щелчок правой кнопкой мыши, «просмотреть изображение»), все файлы будут обслуживаться, как и ожидалось, - и они будут продолжаться, если я выключу кластер Mongrel. Таким образом, nginx может ясно видеть и получать доступ ко всем статическим файлам. Кроме того, при поиске в firebug при загрузке страницы я вижу, что для некоторых файлов делаются двойные запросы (не всегда одинаковые!) И что иногда один из них обслуживается правильно, а другой - зависает на неопределенный срок.
Если я изменю правило, чтобы перенаправить все в мой кластер, все статические данные будут работать нормально - точно такой же результат, как если бы я обратился к одному из дворцов напрямую:
location / {
proxy_pass http://mycluster$request_uri;
}
Это, конечно, не вариант, так как я очень хочу, чтобы nginix обслуживал этот контент. Другая странная вещь - кажется, что файлы действительно отправляются; например, я могу видеть изображения в firebug при наведении на никогда не выполняющиеся запросы. Я довольно новичок в nginix, так что, вероятно, я упустил что-то очевидное - я старался изо всех сил, чтобы найти ответ самостоятельно, но я действительно мог сделать с некоторой помощью!
Большое спасибо,
JS
P.S. Может ли быть так, что nginx и Mongrel конфликтуют из-за того, кто должен обслуживать файл?