Linux

Nginx 只允許某些 IP 的 PHP 文件

  • October 18, 2017

我正在使用以下指令來阻止執行幾種文件類型

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;                       
}

要根據 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塊的順序和重疊匹配阻止了它工作。

引用自:https://serverfault.com/questions/855196