我的 apache2 服务器在代理服务器后面运行。Apache2 不知道它所托管的网站公开使用了哪些主机名。
因此这个请求:
https://www.example.com/zever
像这样发送给 apache:
http://somedomain.localhost/zever
这一切都很好...直到 apache 需要做某种重定向。
它忽略X-Forwarded-Host
代理设置的标头,并将此响应标头发送给客户端:
location: http://somedomain.localhost/zever/
我研究了几种让 apache 使用值X-Forwarded-Host
而不是当前服务器别名或服务器名称的方法,诸如此类UseCanonicalName
,但这些方法都没有用。
我确实偶然发现了这个问题:https://stackoverflow.com/questions/16297233/how-to-rewrite-location-response-header-in-a-proxy-setup-with-apache,它允许您通过使位置标题成为相对标题来编辑位置标题,这可以解决我的大部分问题。
因此我尝试将其添加到我的配置中:
Header edit Location "(^http[s]?://)([^/]+)" ""
唯一的问题是:它不起作用。响应location
标头绝对没有任何改变。其他调用(如Header always set Zever bla
)工作正常。
我在 Ubuntu 16.04 上运行 Apache/2.4.18