disable symlinks + try files = fail

Валентин Бартенев ne на vbart.ru
Чт Апр 26 14:01:22 UTC 2012


On Thursday 26 April 2012 17:29:20 charlie wrote:
[...]
> А вот с конфигом, в котором
> используется try_files, http://test.ru/test.txt
> отображает содержимое файла другого
> юзера:
> 
> -----------------------------------------------------
> server {
>    listen 192.168.0.1:80;
>    server_name test.ru www.test.ru;
>    root /home/test/public_html;
>    location / {
>      location ~.*\.(gif|jpg|png|ico|txt|js|css)$ {
>      try_files $uri @backend;
>      }
>      error_page 405 = @backend;
>      add_header X-Cache "HIT from Backend";
>      proxy_pass http://192.168.0.1:8081;
>      include proxy.inc;
>      }
>    location @backend {
>    internal;
>    proxy_pass http://192.168.0.1:8081;
>    include proxy.inc;
>    }
>    location ~ .*\.(php|jsp|cgi|pl|py)?$ {
>    proxy_pass http://192.168.0.1:8081;
>    include proxy.inc;
>    }
>  }
> -----------------------------------------------------
> Это бага или фича?
> Если фича, как будет выглядеть
> корректный конфиг, чтобы и try_files
> работало, проксируя запросы в апач,
> если файл не существует, и запросы к
> существующим файлам проверялись на
> симлинкнутость?
> 

try_files работает корректно, оно делает ровно то, что вы написали в 
конфигурации: при недоступности файла перенаправляет на @backend. И,
судя по всему, файл уже отдает ваш апач.

Подозреваю, вы хотели что-то такое:

  location \.(?:gif|jpg|png|ico|txt|js|css)$ {
      error_page 404 = @backend;
  }

--
Валентин Бартенев



Подробная информация о списке рассылки nginx-ru