ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

try_files и индек сы


  • To: nginx-ru@xxxxxxxxx
  • Subject: try_files и индек сы
  • From: Алексей Бондарь <alexey.bondar@xxxxxxxxx>
  • Date: Mon, 19 Jan 2009 01:39:05 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:from:to :content-type:content-transfer-encoding:mime-version:subject:date :x-mailer; bh=xNbKaR8XjjuJR6ne67kh6Ct4Pu9IzjKa7MUNuJZZCkc=; b=dTo1UpAKVabFfLKYsTOEIlnb1i4qnke45sJZVD+CSZqsx4Rw1xTr+aOpTZRXgQ12R/ SGiPC1brAiCza2yUSS2M3cu9BKI3EKsrYegCd/JCpEnJSQRqhItcSB50N9xz2wU/3LWJ bh6jQBna9ZPAnQmLdFth9DGeWOaNk1VZd4FT8=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:from:to:content-type:content-transfer-encoding :mime-version:subject:date:x-mailer; b=ukqfccRomolZBc0raVBhqrC83xXJMoEmPe+JynPC607OXnSkZI4C1etu3vUi2Ghcfa LxFmzkBaBed7exZyxnxJFhvbynwq84a1m5Q4KNWbphVYkq8bAYbZAf0sUIPCHkPXqsR0 pJvzP6NDoZAzHhsKYoApJguCrA6IlDBgGEpzI=

Доброй ночи,

Решил обновится с версии 0.6.34 до 0.7.30 и попутно избавится от кучи if'ов в пользу try_files. Nginx проксирует apache с passenger (mod_rails).

Получился следующий конфиг:

server {
  listen 80;
  server_name host.ru;
  root /home/user/public;
  access_log /home/user/log/access.log;
  error_log /home/user/log/error.log debug;
  error_page   500 502 503 504 /500.html;
  client_max_body_size 50M;
  log_not_found on;

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_max_temp_file_size 0;

    try_files      /system/maintenance.html
                   $uri  $uri/index.html  $uri.html
                   @apache;
}

location @apache {
proxy_pass http://127.0.0.1:8080;
}
}

И теперь, в случае если клиент заходит по адресу http://host.ru/, а в root нет индексного файла, он получает 403. То-же самое происходит если в root есть директория, но в ней так-же нет индексного файла (http://host.ru/some/). Что несколько ломает файловое кеширование в Rails.

В логи при уровне debug пишется следующее:
2009/01/18 14:03:16 [error] 16996#0: *413520 directory index of "/home/ user/public/" is forbidden

Если после try_files добавить условие:

if (!-f $request_filename) {
        proxy_pass http://127.0.0.1:8080;
        break;
}

Всё работает как надо и запрос в этом случае проксируется к бэкэнду.

Так и должно быть? В документации сказано что try_files в случае если файл найден небыл должен делать редирект на последний параметр, по логике это должно относится и к индексам.

Спасибо.


 




Copyright © Lexa Software, 1996-2009.