背景
生产环境下,禁止某一类文件访问、或某个目录下的文件禁止web访问
如config.ini 这个配置文件是不能对外提供访问的。
处理方法
nginx禁止访问所有.开头的隐藏文件设置
location ~* /.* {
deny all;
}
nginx禁止访问目录,
例如:禁止访问path目录
location ^~ /path {
deny all;
}
问题1
如果基于WEB根目录下,要禁止用户访问/config目录,或者要禁止用户访问/config.ini(ZF常用INI,不过建议还是放到WEB目录以外的地方),可以通过location进行配置,返回403或者404等
location = /config/ {
return 404;
}
location =/config.ini{
return 404;
}
禁止path目录下所有访问
location = /path/ {
return 404;
}
对某些特定后缀名禁止访问
location ~* \.(txt|doc)$ {
if (-f $request_filename) {
root /home/domain/public_html/test;
break;
}
}
对某个目录进行访问限制
location /phpsysinfo/ {
allow 192.168.0.10;
deny all;
}
禁止某个目录下php执行
如果是单个目录
location ~* ^/uploads/.*\.(php|php5)$
{
deny all;
}
如果是多个目录
location ~* ^/(attachments|uploads)/.*\.(php|php5)$
{
deny all;
}
最后给一个完整的配置示例
location ~ /mm/(data|uploads|templets)/*.(php)$ {
deny all;
}
location ~ .php$ {
try_files $uri /404.html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
配置完后记得重启Nginx生效。