Nginx 日志泄露通常指敏感信息被写入访问日志/错误日志,或日志文件本身可被未授权访问。下面从「写入内容控制」和「文件访问控制」两个维度说明防范方法。
如果接口使用 GET 传递 token、手机号等,会被记到 access log:
GET /api/login?token=abc123 HTTP/1.1
解决方式
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"';
location /api/pay {
access_log off;
error_log off;
}
不要开启:
log_format main '$http_authorization';
避免 token 进日志。
error_log /var/log/nginx/error.log warn;
避免 debug 模式泄露内部路径、变量。
location ~* \.(log|txt)$ {
deny all;
return 403;
}
location /var/log/nginx/ {
deny all;
}
chown root:nginx /var/log/nginx/*.log
chmod 640 /var/log/nginx/*.log
autoindex off;
| 场景 | 风险 |
|---|---|
| GET 传 token | 日志泄露 |
| 开放 *.log | 直接下载 |
| debug 日志 | 路径/变量泄露 |
| 权限 644 | 其他用户可读 |
如果你有具体场景(如 HTTPS、API、K8s、Docker),我可以给更针对性的 Nginx 配置示例。