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
。
当我们将 ProxyPass
和 ProxyPassReverse
目标更改为 https://internal.server
(绕过重定向)时,ProxyPreserveHost
指令起作用了。
我们正在使用反向代理来允许防火墙外部的用户访问内部服务器上的服务。然而,尽管我们使用 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
。
当我们将 ProxyPass
和 ProxyPassReverse
目标更改为 https://internal.server
(绕过重定向)时,ProxyPreserveHost
指令起作用了。