Skip to content

Instantly share code, notes, and snippets.

@1234ru
Last active April 22, 2023 01:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 1234ru/a7f0ab891bbaae6330ed0c2857e7f0bc to your computer and use it in GitHub Desktop.
Save 1234ru/a7f0ab891bbaae6330ed0c2857e7f0bc to your computer and use it in GitHub Desktop.
Пример директив конфигурации nginx для сайта
# $php_upstream должна быть определена в вышестоящей конфигурации
set $router /router.php;
location = /nginx.conf { return 404; }
location ^~ /.git { return 404; }
location ^~ /vendor { return 404; } # для Composer
location = /composer.json { return 404; }
location @router {
# Именованный location для ответа 404.
# Нужен для поддержки виртуальных адресов
# (таких, которые не указывают на физические файлы)
# и не было изменения URL при внутреннем перенаправлении.
# Благодаря такой конфигурации:
# 1. На сайте можно сделать красивую страницу 404,
# внешний вид которой управляется тем же механизмом,
# что генерирует HTML обычных страниц.
# 2. Служебные адреса, закрытые HTTP-кодом 404,
# внешне вообще не будут отличаться
# от действительно несущетсвующих адресов.
# Чего нельзя сказать о варианте, когда самим nginx отдается
# обычная белая страница с ошибкой.
# Однако в error.log nginx (если таковой ведется) эти адреса
# будут отсутствовать, в отличие от настоящих 404-х.
# См. также https://webew.ru/articles/5216.webew
fastcgi_pass $php_upstream;
fastcgi_param SCRIPT_FILENAME $document_root$router;
include fastcgi_params;
}
location / {
index $router;
error_page 404 = @router;
location ~ \.php$ {
if ($uri !~ (ajax) ) {
# Запрещаем доступ к файлам *.php через веб,
# кроме тех, у которых в имени есть "ajax".
return 404;
}
fastcgi_pass $php_upstream;
fastcgi_param SCRIPT_FILENAME $document_root$uri;
include fastcgi_params;
# Если будет запрошен несуществующий ajax-файл с расширением php,
# nginx выдаст белую страницу с надписью "No input file specified."
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment