Я использую 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 неявно «пробует файлы» для любого блока местоположения?