配置apache不使用x-forwarded-host标头作为主机名

时间:2018-09-28 10:32:05

标签: apache kubernetes

当我通过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中进行配置?

1 个答案:

答案 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指令,以便我们对它们进行注释。