Nginx 禁止访问敏感目录和文件的配置方法【安全实战】

代码笔记1周前更新
5,813 0

Nginx 禁止访问目录和敏感文件的正确姿势

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

Nginx 禁止访问敏感目录和文件的配置方法【安全实战】

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 配置,是否存在“裸奔”的目录或文件吧!

© 版权声明

暂无评论

本文暂时没有评论,来添加一个吧(●'◡'●)