Apache httpd配置SetEnvIf过滤TLSv1.2日志不生效排查
配置错误原因及修复方案
你的配置失效核心原因是SetEnvIf指令的匹配范围限制:
SetEnvIf仅支持匹配请求头、内置请求属性(如客户端IP、请求方法等),无法直接匹配mod_ssl生成的SSL_PROTOCOL这类内部环境变量,你写的匹配规则实际上从未生效,dontlog变量没有被正确设置,所以所有请求都会被记录。- 少数场景下也可能是你修改配置后没有重载httpd服务、或者mod_setenvif模块未启用导致规则不生效。
修复方法
将原来的SetEnvIf规则替换为支持匹配环境变量的SetEnvIfExpr指令即可:
# 匹配TLSv1.2的请求设置dontlog标记 SetEnvIfExpr "%{SSL_PROTOCOL} == 'TLSv1.2'" dontlog # 如果需要同时排除TLSv1.3,可改用这条规则 # SetEnvIfExpr "%{SSL_PROTOCOL} =~ /^TLSv1\.[23]$/" dontlog CustomLog logs/TLSv_TSV \ "%h\t\ %{SSL_PROTOCOL}x\t\ %{SSL_CIPHER}x\t\ %{User-Agent}i\t\ %r" env=!dontlog
修改完成后重载httpd配置即可生效。
内容的提问来源于stack exchange,提问作者Francesco Papini
相关产品推荐
相关产品推荐

