温馨提示×

nginx日志泄露如何防范

小樊
53
2026-09-26 19:48:38
栏目: 编程语言

Nginx 日志泄露通常指敏感信息被写入访问日志/错误日志,或日志文件本身可被未授权访问。下面从「写入内容控制」和「文件访问控制」两个维度说明防范方法。


一、避免敏感信息写入日志

1. 不记录敏感请求参数

如果接口使用 GET 传递 token、手机号等,会被记到 access log:

GET /api/login?token=abc123 HTTP/1.1

解决方式

  • 改用 POST + body
  • 或过滤参数:
map $request_uri $log_uri {
    default $request_uri;
    ~*\?token= $scheme://$host$uri;
}

access_log /var/log/nginx/access.log main;
log_format main '$remote_addr - $time_local "$log_uri"';

2. 对特定接口关闭日志

location /api/pay {
    access_log off;
    error_log off;
}

3. 限制 header / body 日志

不要开启:

log_format main '$http_authorization';

避免 token 进日志。


4. 错误日志级别控制

error_log /var/log/nginx/error.log warn;

避免 debug 模式泄露内部路径、变量。


二、防止日志文件被访问

1. 禁止通过 Web 访问日志目录

location ~* \.(log|txt)$ {
    deny all;
    return 403;
}

location /var/log/nginx/ {
    deny all;
}

2. 正确设置文件权限

chown root:nginx /var/log/nginx/*.log
chmod 640 /var/log/nginx/*.log

3. 关闭 autoindex

autoindex off;

三、日志安全运维建议

  • 定期切割 & 清理(logrotate)
  • 日志传输到集中日志系统(ELK / Loki)
  • 对日志做脱敏处理
  • 不在公网暴露 status / stub_status

四、常见泄露场景总结

场景 风险
GET 传 token 日志泄露
开放 *.log 直接下载
debug 日志 路径/变量泄露
权限 644 其他用户可读

如果你有具体场景(如 HTTPS、API、K8s、Docker),我可以给更针对性的 Nginx 配置示例。

0 踩