Nginx 仅允许某些 IP 地址运行 PHP 文件

Nginx 仅允许某些 IP 地址运行 PHP 文件

我正在使用以下指令来阻止几种文件类型的执行

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和重叠匹配阻止了它工作。

相关内容