最后更新于

Nginx排除负载均衡健康检测日志


使用负载均衡,比如腾讯云的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;
    }
}

💡 优化建议

这样配置后,健康检查的请求仍然会被正常处理并返回状态码,但不会在访问日志中记录,从而保持日志的清洁,便于问题排查和日志分析。