![通过 X-Forwarded-Host 标头匹配 VirtualHost](https://linux22.com/image/780201/%E9%80%9A%E8%BF%87%20X-Forwarded-Host%20%E6%A0%87%E5%A4%B4%E5%8C%B9%E9%85%8D%20VirtualHost.png)
我正在使用 apache 2.4,想创建多个 vhost。vhost 应该根据 header 进行匹配X-Forwarded-Host
,而不是根据Host
header 进行匹配。
不幸的是,我在文档中找不到任何内容。这种行为可能吗?如果是,怎么做?
为了进一步澄清我的问题:ServerName 指令状态
如果您使用基于名称的虚拟主机,则部分内的 ServerName 指定必须出现在请求的 Host: 标头来匹配这个虚拟主机。
我正在尝试实现相同的行为,但基于X-Forwarded-Host
答案1
经过评论中的讨论,我认为这似乎是不可能的。
最简单的解决方法似乎是在网络服务器之外强制保存主机头。
如果无法在 L7 设备上更改 Host 标头设置,则一个选项是添加另一个反向代理,其唯一目的是将 XFH 标头写入 Host 标头。这实际上可能是另一个 apache2 httpd(在此回收 @Tomtom 的评论),但可能存在占用空间较小的解决方案。
另一个调查的选项是编写一个专门用于 Apache 的模块,但我不确定交换检测到的服务器名称是否是个好主意,因为它似乎与源紧密相关。
尝试使用 apache 配置指令覆盖主机标头肯定行不通RequestHeader set Host ...
。它改变了标头,但对 vhost 选择没有影响。