Return 原始 URL 使用反向代理时

Return original URL when using reverse proxy

我们正在使用反向代理来允许防火墙外部的用户访问内部服务器上的服务。然而,尽管我们使用 ProxyPreserveHost 指令,但带有 URL http://project.domain.com/index.html 的请求会导致 http://internal.server/index.html 而不是预期的 http://project.domain.com/index.html.

这是我们的虚拟主机定义:

<VirtualHost *:443>

        ServerName "https://project.domain.com"
        SSLEngine on
        SSLCertificateFile /etc/ssl/our.cer
        SSLCertificateKeyFile /etc/ssl/private/our.key

        ProxyRequests Off
        ProxyVia Off
        <Proxy *>
            Require all granted
        </Proxy>
        ProxyPreserveHost On
        ProxyPass / http://internal.server:80/
        ProxyPassReverse / http://internal.server:80/

</VirtualHost>

问题是 ProxyPass 的目标本身被重定向到 https://internal.server

当我们将 ProxyPassProxyPassReverse 目标更改为 https://internal.server(绕过重定向)时,ProxyPreserveHost 指令起作用了。