#php #nginx
#php #nginx
Вопрос:
Я новичок в nginx. Мне нужно заблокировать все .php файлы по соображениям безопасности. Любой простой способ сделать это похожим на .htaccess от Apache, как показано ниже:
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} .php$
RewriteRule !^index.php index.php [L,NC]
Заранее спасибо!
Ответ №1:
Вместо обычного расположения обработчика nginx PHP
location ~ .php$ {
... # FastCGI PHP handler here
}
используйте что-то вроде
location ~ .php$ {
rewrite ^ /index.php last;
}
location = /index.php {
... # FastCGI PHP handler here
}
Хотя совпадающие местоположения регулярных выражений ( location ~ <regex> { ... }
) имеют приоритет над местоположениями префиксов ( location <URI prefix> { ... }
) при сопоставлении URI запроса, точное совпадающее местоположение ( location = <URI> { ... }
) имеет приоритет над ними обоими.
Комментарии:
1. Другое дело — <code> расположение ~ .php$ { rewrite ^ /index.php последнее; } местоположение = /index.php { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php ; включить fastcgi_params; } <код> Загружает эти файлы, как я могупредотвратить это?
2. Похоже, вы не установили параметр
SCRIPT_FILENAME
FastCGI. Добавьтеfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
директиву в расположение обработчика PHP FastCGI.