Назад | Перейти на главную страницу

nginx вложенное расположение try_files приоритет

Каков фактический порядок применения таких правил, как: index, location, try_files?

Конфигурация:

server {
    listen 127.0.0.1:80;
    listen [::1]:80;
    server_name localhost;
    root /www/public;
    index index.html;

    location / {
        try_files $uri $uri/ /index.php;

        location ~ \.php$ {
            include /etc/nginx/fastcgi_params;
            fastcgi_pass unix:/var/run/php-fpm.sock;
            fastcgi_param SCRIPT_FILENAME /www/public$fastcgi_script_name;
        }
    }
}

Ожидаемое поведение:

  1. uri =http: //localhost/test.php
  2. совпадение "местоположение /"
  3. try_files test.php не
  4. try_files test.php / not
  5. try_files /index.php соответствует
  6. соответствует вложенному "location ~ \ .php $"

Фактическое поведение:

  1. uri =http: //localhost/test.php
  2. соответствует вложенному "location ~ \ .php $"

Ожидал ли я неправильного поведения?

Отредактировано:

Значит, мне нужно попробовать_файлы в каждом разделе локации?

server {
    ...
    location / {
        try_files $uri $uri/ /index.php;

        location ~ \.php$ {
            try_files $uri /index.php; # added line
            ...
        }
    }
}