«

Nginx禁止访问隐藏文件.htaccess配置

时间:2026-11-15 07:12     作者:emer     分类: 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。

常见坑

  1. 正则 ~ /. 写在 location 之后被其他规则优先匹配,位置要靠前。
  2. 只拦 .env 漏了 .git、.svn、.htaccess,逐个暴露。
  3. deny all 与 return 404 混用,响应码不一致。
  4. 正则写法错误,斜杠未转义,规则不生效。
  5. 隐藏文件放在 root 之外则天然访问不到。
  6. 部分框架入口需要隐藏目录,别误拦。
  7. 静态资源目录也要加规则,别只在根目录配。

总结

location ~ /. deny all 拦截点开头隐藏文件,或精确匹配 .env/.git/.htaccess。规则放在 server 内合适位置,curl 验证返回 403/404。敏感配置文件同时应放到 web 根目录之外,形成双保险。

遇到问题加QQ23979811 协助处理

标签: Nginx 安全 隐藏文件 htaccess