当我通过K8入口向Apache请求时,如果我的请求的x-forwarded-host标头超过1个,我收到一个400错误的请求
www.a.com,www.b.com
我从该请求登录Apache,Apache使用x-forwarded-host作为主机名。 Apache日志看起来像这样
[core:debug] [pid 18] vhost.c(796):[client 172.17.0.7:51726] AH02415:[strict]无效的主机名'www.a.com,www.b.com',有问题附近:,www.b
[core:debug] [pid 18] vhost.c(891):[client 172.17.0.7:51726] AH00550:客户端发送了格式错误的Host标头:www.a.com,www.b.com
[core:debug] [pid 18] protocol.c(1393):[client 172.17.0.7:51726] AH00569:客户端发送的HTTP / 1.1请求没有主机名(请参阅RFC2616第14.23节):/ [headers:debug] [pid 18] mod_headers.c(900):AH01503:标头:ap_headers_error_filter() 172.17.0.5:80 172.17.0.7--[28 / Sep / 2018:10:27:44 +0000]“ GET / HTTP / 1.1” 400 0“-”“”
我必须配置Apache,不要使用x-forward-host作为主机名。我如何在Apache中进行配置?
答案 0 :(得分:0)
该标头是由Apache前面的设备发送的。充当代理的设备将添加此标头。因此,您正在接收它。如果您不想在日志中使用它,请更改日志的格式描述符。
例如:默认LogFormat
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
还有我在生产服务器上使用的那一个:
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
并且在定义access_log时使用它:
CustomLog logs/access_log combined
如果删除%{X-Forwarded-For}i
并将其替换为默认的%h
,则“双”主机名(或IP)不再显示。
如果这不适用于您的配置,请从配置文件中添加LogFormat和CustomLog指令,以便我们对它们进行注释。