You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用http-response set-status设置非200状态码时,HAProxy为何记录200状态码?

HAProxy 1.7.8拦截恶意Referer后的日志解析与配置优化

看起来你已经成功实现了恶意Referer的拦截逻辑——能返回418状态码说明你的ACL规则是生效的,先来复盘下这类场景的标准关键配置(方便其他读者参考):

frontend main
    bind *:80
    # 匹配包含特定恶意域名的Referer头(不区分大小写)
    acl contains_malicious_referer hdr_reg(Referer) -i malicious\.com evil\.net
    # 触发拦截时返回418并记录标记日志
    http-request deny status 418 log tag MALICIOUS_REFERER if contains_malicious_referer
    # 正常请求转发至后端8091端口的Nginx
    default_backend nginx_service

backend nginx_service
    server nginx_local 127.0.0.1:8091 check

针对你贴出的截断日志:

Feb 5 13:11:45 aaa-www05 haproxy_l1_xxxxx[38749]: 111.222.111.222:2605 ……

这是HAProxy默认的拦截请求日志行为,它会记录被拒绝请求的源IP、端口等基础信息。如果想让日志更具可读性,能直接看到触发拦截的Referer内容,可以调整日志格式,加入请求头和状态码字段:

# 在global或frontend段添加自定义日志格式
log-format "%ci:%cp [%tr] %ft %b/%s %ST %hr %{Referer}h %{+Q}r"

这个格式里的%ST会显示返回的418状态码,%{Referer}h会直接打印请求的Referer值,%hr则是完整请求头,方便你快速确认拦截的准确性。

另外,我在配置里加了log tag MALICIOUS_REFERER,这样日志里会明确标记出这类恶意请求,你可以用日志工具快速筛选:

grep "MALICIOUS_REFERER" /var/log/haproxy.log

总的来说,你的核心拦截逻辑没问题,日志记录是HAProxy的正常行为,通过微调日志格式和添加标记,能让你更高效地监控这类恶意请求。

内容的提问来源于stack exchange,提问作者Greg Dubicki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:05:06