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

Почему в конфигурации nginx работает пустой блок местоположения?

Я использую Nginx для обслуживания своего PHP-приложения с помощью PHP-FPM. Для статического содержимого они обслуживаются следующим блоком местоположения:

Блок А:

location ~* \.(ico|gif|jpe?g|png|js|css|woff2?|ttf)$ {
    try_files $uri =404;
    allow all;
}

Во время тестирования моей конфигурации я понял, что следующие конфигурации блоков также работают, даже если они вернули 404 правильно, когда элемент не существует:

Блок Б:

location ~* \.(ico|gif|jpe?g|png|js|css|woff2?|ttf)$ {
    try_files $uri =404;
}

Блок C:

location ~* \.(ico|gif|jpe?g|png|js|css|woff2?|ttf)$ {
    allow all;
}

Блок D:

location ~* \.(ico|gif|jpe?g|png|js|css|woff2?|ttf)$ {
    # empty
}

Однако, когда весь блок не определен, статическое содержимое не соответствовало ожиданиям.

Зачем делать пустой Блок D работает? Есть ли разница между ними всеми?

Nginx неявно «пробует файлы» для любого блока местоположения?