作为程序员一定要保持良好的睡眠,才能好编程

Nginx禁止目录访问或禁止目录下一类文件禁止访问

发布时间:2019-04-10


背景

生产环境下,禁止某一类文件访问、或某个目录下的文件禁止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生效。