Nginx 禁止访问目录和敏感文件的正确姿势
在 Web 安全中,一个最容易被忽视的漏洞就是:Web 根目录下的文件暴露。默认情况下,如果没有做限制,Nginx 会直接响应访问请求,无论是图片、配置文件,还是源码文件。一不小心就把 .ini
、.conf
、.txt
等配置文件下载了,这可是重大隐患。

Nginx 禁止访问敏感目录和文件的配置方法【安全实战】
本篇文章将教你如何通过 Nginx 的 location
配置,禁止用户直接访问某些目录或文件类型,从而提升服务器安全性。
☝️ 温馨提示:测试时请清理浏览器缓存
浏览器会缓存下载的文件,如果你刚访问过某个敏感文件,修改 Nginx 配置后记得清除浏览器缓存再测试,否则你可能误以为规则未生效。
一、禁止访问特定后缀的文件
✅ 1.1 禁止所有 .ini
、.conf
、.txt
文件:
location ~ \.(ini|conf|txt)$ {
deny all;
}
这些后缀通常是配置文件,禁止访问可以避免敏感信息泄露。
✅ 1.2 禁止某个目录下的 .php
文件执行:
location /wp-content/uploads {
location ~ \.php$ {
deny all;
}
}
/uploads
目录通常用于上传图片或文档,不应执行 PHP 脚本。
✅ 1.3 禁止多个目录下的 .php
文件:
location ~* ^/(css|uploads)/.*\.php$ {
deny all;
}
这是多目录组合匹配的方式,推荐使用 ~*
实现忽略大小写匹配。
二、禁止访问目录或目录下所有文件
✅ 2.1 完全禁止访问某个目录:
location ^~ /test/ {
deny all;
}
这将禁止访问 /test/
目录及其下所有文件。
✅ 2.2 禁止访问某个目录及其文件:
location ^~ /test {
deny all;
}
略有不同:/test
也包括对目录本身的访问(不加 /
结尾,匹配更多情况)。
三、Nginx location
匹配规则简析
在做限制前,了解匹配逻辑非常重要:
符号 | 说明 |
---|---|
= |
精确匹配 |
^~ |
前缀匹配(优先级高) |
~ |
正则匹配(区分大小写) |
~* |
正则匹配(不区分大小写) |
/ |
匹配所有请求(默认) |
📌 匹配优先级顺序:
= > ^~ > ~ / ~* > /
✅ 总结一句话:
安全不是靠运气,而是靠细节。
合理配置 Nginx 的访问控制,能有效防止敏感文件被下载、脚本被非法执行,是每一位站长和运维人员的基本功。现在就检查一下你的 Nginx 配置,是否存在“裸奔”的目录或文件吧!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
本文暂时没有评论,来添加一个吧(●'◡'●)