应为敏感文件路径单独设置 access_log off,优先用 = 精确匹配根目录高危文件(如 /wp-config.php),再用正则 location ~ /. { access_log off; deny all; } 屏蔽点开头路径,最后用 location ~* .(env|ini|log|bak|swp|conf|yml|yaml|sql|sh|py|xml)$ 统一拦截危险扩展名,配置后须 nginx -t 验证并测试响应与日志。

在 Nginx server 配置中,要排除全站对特定敏感文件(如 .env、.git、wp-config.php 等)的访问日志记录,核心是**为这些路径单独设置 access_log off**,而不是依赖全局过滤或条件判断——Nginx 不支持运行时跳过日志写入,只有 access_log off 是真正生效的硬性开关。
用精确匹配屏蔽根目录高危单文件
对必须严防且路径固定的文件(如 /wp-config.php、/config.php),优先用 = 精确匹配,性能高、无歧义:
location = /wp-config.php { access_log off; return 403; }location = /config.php { access_log off; deny all; }location = /.env { access_log off; return 404; }
注意:精确匹配只作用于完整路径,不覆盖 /wp-config.php.bak 或 /api/.env,需配合其他规则补全。
用正则统一屏蔽点开头的隐藏路径
所有以点号开头的路径(/.git/、/app/.env、/.htaccess)共性明确,一条正则即可覆盖:
location ~ /\. { access_log off; deny all; }- 必须放在
location /及其他通用规则之前,否则可能被提前匹配而失效 - 建议加
log_not_found off;,防止 404 请求刷屏 error.log
用扩展后缀正则拦截常见危险残留文件
备份、日志、配置类文件常被扫描器盯上,批量封禁可大幅降低攻击面和日志噪音:
location ~* \.(env|ini|log|bak|swp|conf|yml|yaml|sql|sh|py|xml)$ { access_log off; return 404; }-
~*表示不区分大小写,避免漏掉.ENV或.LOG - 结尾加
$锚定,防止误匹配/public/app.js?env=prod这类带参 URL
验证与生效要点
配置完成后不能直接上线,必须验证是否真正生效:
- 执行
nginx -t && nginx -s reload重载配置 - 发起测试请求:
curl -I https://yoursite.com/.env,确认返回 404/403 且无 access.log 新增条目 - 对比普通路径(如
/index.html)日志是否仍正常写入 - 检查 location 书写顺序:精确匹配(=)→ 前缀非正则(^~)→ 正则(~ / ~*)→ 通用前缀(/),高优先级规则必须靠前











