Nginx 配置文件禁止访问目录或文件
某些网站系统需要用户上传文档、图片、视频等文件到某些目录下,难免程序有些漏洞,导致用户上传了PHP、CGI等可执行的文件,导致网站陷入非常为难的境地。此时我们可以通过nginx来禁止用户访问这些目录下的可执行文件。
nginx 配置
vim /usr/local/nginx/conf/nginx.conf
location ~ ^/(uploads|images)/.*\.(php|php5|jsp)$ { deny all; }
说明: 在目录uploads、images目录下面的所有php、jsp都不能访问。
也会选择这样写:
location ~ ^/(uploads|images)/.*\.(php|php5|jsp)$ { return 403; }
这样也是一样的,如果配置了403页面,会跳转过去。
403页面配置
error_page 403 http://cdn-home.mimvp.com/404.html; // 指定CDN页面
error_page 403 404.html; // 指定当前项目根目录下的404.html文件
禁止访问目录
1. 禁止访问目录 /conf/*
location ^~ /conf/ { deny all; }
注意:上述/conf/后面的斜杠不能少,否则所有以conf开头的目录或文件都将禁止访问。
2. 禁止访问任何目录下的.sql文件,禁止浏览器访问
location ~.*\.sql { deny all; }
这样,任一目录的sql文件都不会被用户访问到了。
总 结
1. 禁止目录或文件的配置,需要在解析匹配规则之前
2. deny 和 return 404,选择其一,推荐return 404;
实战配置如下:
## 禁止配置,要在匹配规则之前 location ~ /(mimvp_header|mimvp_footer|sitemap|conf)\.php { # deny all; return 404; } ## 匹配规则,如 xml, html location / { root html/mimvp_home/; index index.php index.html index.htm; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; include fastcgi.conf; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.(php|php5|html)$ { root html/mimvp_home/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi.conf; }
禁止示例
禁止访问根目录下的 sitemap.php 文件
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2017-08-06 23:25:10
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!