使用负载均衡,比如腾讯云的CLB转发到nginx时,nginx的日志会打印大量的健康检查日志,例如:
[24/Jul/2024:16:21:46 +0800] "GET / HTTP/1.1" 200 104 "-" "clb-healthcheck" "-" "-"
📝 问题描述
这些健康检查日志没多大用处,而且影响问题排查,所以很有必要排除这种日志打印。
✅ 解决方法
只要在配置中加上access_log off;
,例如:
location / {
if ($http_user_agent ~* "clb-healthcheck") {
access_log off;
}
}
🔧 其他常见健康检查标识
不同的负载均衡器可能使用不同的User-Agent,可以根据实际情况调整:
location / {
# 腾讯云CLB健康检查
if ($http_user_agent ~* "clb-healthcheck") {
access_log off;
}
# 阿里云SLB健康检查
if ($http_user_agent ~* "slb-healthcheck") {
access_log off;
}
# AWS ELB健康检查
if ($http_user_agent ~* "ELB-HealthChecker") {
access_log off;
}
}
💡 优化建议
这样配置后,健康检查的请求仍然会被正常处理并返回状态码,但不会在访问日志中记录,从而保持日志的清洁,便于问题排查和日志分析。