我正在使用以下指令来阻止几种文件类型的执行
location ~* (\.php$|\.htaccess$|\.git) {
deny all;
}
我如何才能允许某个特定 IP 地址只执行一个 PHP 脚本?
我尝试了以下操作来允许执行一个 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;
}
答案1
要根据 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;
}
答案2
用作location = /path/to/adminer.php
您的位置块。此=
匹配在 nginx 中具有最高优先级,location
之后不再匹配其他块。
在您的配置中,很可能是您的块的顺序location
和重叠匹配阻止了它工作。