поведение try_files

Igor Sysoev is at rambler-co.ru
Wed Aug 5 13:03:35 MSD 2009


On Wed, Aug 05, 2009 at 12:50:07PM +0400, Alexey Bazhin wrote:

> Здравствуйте!
> 
> Решил воспользоваться директивой try_files и тут же возникли вопросы
> по ее повидению.
> 
> Верия nginx 0.7.61, короткий тестовый конфиг такой:
> 
> worker_processes  1;
> events {
>  worker_connections 1024;
> }
> 
> http {
>  include mime.types;
>  default_type application/octet-stream;
>  server {
>   listen 80;
>   server_name localhost;
> 
>   location / {
>    if ($uri ~ .*) {
>     set $a a;
>    }
>    root /usr/local/nginx/html;
>    try_files /test.txt /index2.html /index.html =403;
>   }
> 
>  }
> }
> 
> Все три файла указанных в try_files существуют в /usr/local/nginx/html.
> При запросе корня я получаю index.html, если закомментировать if то
> получаю index2.html. А наскольно я понял из документации я должен
> получать test.txt, это так? И почему на результат влияет наличие if-а
> который ничего не меняет?

Потому что if - это невидимые грабли.

А конструкции
    "if ($uri ~ ..."
нужно заменять на
    "location ~ ..."

В такой

   location / {
       root /usr/local/nginx/html;
       try_files /test.txt /index2.html /index.html =403;
   }

с существующим /usr/local/nginx/html/test.txt у меня на любой запрос
выдаются содержимое test.txt.


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list