Nginx禁止访问隐藏文件.htaccess配置 Nginx
前言
.htaccess、.env、.git 等以点开头的隐藏文件含配置或敏感信息,若被直接访问会泄露数据库密码、源码。Nginx 默认可能允许下载这些文件,需要在 server/location 显式拦截。本文讲解拦截规则、放行例外和验证。
操作步骤
1. 拦截所有点开头的隐藏文件
location ~ /\. {
deny all;
}
2. 针对 .env、.git 单独拦截
location ~ /\.(env|git|htaccess|svn) {
deny all;
}
3. 返回 403 或 404
location ~ /\. {
return 404;
}
4. 放在 server 块内,注意 location 顺序
server {
listen 80;
root /var/www/html;
location ~ /\. { deny all; }
}
5. 校验并重载
nginx -t && nginx -s reload
6. 验证访问被拒
curl -I https://域名/.env
应返回 403 或 404。
常见坑
- 正则 ~ /. 写在 location 之后被其他规则优先匹配,位置要靠前。
- 只拦 .env 漏了 .git、.svn、.htaccess,逐个暴露。
- deny all 与 return 404 混用,响应码不一致。
- 正则写法错误,斜杠未转义,规则不生效。
- 隐藏文件放在 root 之外则天然访问不到。
- 部分框架入口需要隐藏目录,别误拦。
- 静态资源目录也要加规则,别只在根目录配。
总结
location ~ /. deny all 拦截点开头隐藏文件,或精确匹配 .env/.git/.htaccess。规则放在 server 内合适位置,curl 验证返回 403/404。敏感配置文件同时应放到 web 根目录之外,形成双保险。
遇到问题加QQ23979811 协助处理