Apache ProxyPass 似乎没有代理来自远程主机的内容

Apache ProxyPass 似乎没有代理来自远程主机的内容

我正在尝试在“主”站点的 URL 上创建代理,以访问远程站点“东部”,但陷入了重定向循环。这不是我所期望的行为 - 我知道 ProxyPass 会将内容重写到 URL,但我认为它的行为就像重定向到“主”主机一样。

应用的配置文件非常简单:

user@master:/etc/apache2/conf-enabled# cat multisite_proxy.conf
<Location /prod_east>
        ProxyPass http://east.domain.com/prod_east
        ProxyPassReverse http://east.domain.com/prod_east
</Location>

使用 cURL,我的输出如下:

user@master:~# curl -IL https://master.domain.com/prod_east/
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 22:58:41 GMT
Server: Apache/2.4.38 (Debian)
Location: https://master.domain.com//prod_east/
Content-Type: text/html; charset=iso-8859-1

...

curl: (47) Maximum (50) redirects followed

东部的 Apache 日志显示了 cURL 的请求。

如果我浏览,http://east.domain.com/prod_east我会被重定向到应用程序的登录页面(这是我所期望的)。使用 cURL 检查后,我看到:

user@master:~# curl -IL http://east.domain.com/prod_east
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache/2.4.38 (Debian)
Location: https://east.domain.com//prod_east
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache
Location: https://east.domain.com/prod_east/subpath/
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 302 FOUND
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache
Vary: Cookie
Cache-Control: no-cache
**Location: /prod_east/subpath/login.py?_origtarget=index.py**
Content-Type: text/html; charset=UTF-8

最后一个 Location: 条目让我感到疑惑:它告诉客户端重定向到,但我希望根据 ProxyPass 规则/prod_east/从 请求该条目。east.domain.com

代理模块已启用,重写模块也已启用。

有什么帮助吗?我显然不明白这里有些事情...

提前致谢。

答案1

这里的问题是“东部”站点强制重定向到 HTTPS,而 Apache 未配置为代理 TLS 内容。在“主”上启用 SSLProxy 并更新multisite_proxy.conf为引用 https(从而跳过 HTTP->HTTPS 重定向)后,现在一切正常。

相关内容