Last active
April 22, 2023 01:47
-
-
Save 1234ru/a7f0ab891bbaae6330ed0c2857e7f0bc to your computer and use it in GitHub Desktop.
Пример директив конфигурации nginx для сайта
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# $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