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
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!