Я использую следующую инструкцию, чтобы заблокировать выполнение нескольких типов файлов
location ~* (\.php$|\.htaccess$|\.git) {
deny all;
}
Как я могу разрешить выполнение только одного сценария PHP для определенного IP-адреса?
Я пробовал следующее, чтобы разрешить выполнение одного скрипта PHP, но не работает ..
location ~ ^adminer.php {
fastcgi_pass php-fpm:9000;
fastcgi_index adminer.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
include fastcgi_params;
}
Чтобы заблокировать пользователя по IP, используйте инструкции «разрешить - запретить», как описано на ngx_http_access_module Затем вы можете добавить правило сбора всех, если оно вам нужно.
location ~* phpinfo.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
allow your.exact.i.p/32;
deny all;
}
location ~* \.(?:php|htaccess|git)$ {
deny all;
}
Использовать location = /path/to/adminer.php
как блок вашего местоположения. В =
совпадение имеет наивысший приоритет в nginx, а другие location
после этого блоки не совпадают.
В вашей конфигурации, скорее всего, это порядок вашего location
блоки и перекрывающиеся спички, которые мешают его работе.