![Apache ProxyPass 似乎没有代理来自远程主机的内容](https://linux22.com/image/761216/Apache%20ProxyPass%20%E4%BC%BC%E4%B9%8E%E6%B2%A1%E6%9C%89%E4%BB%A3%E7%90%86%E6%9D%A5%E8%87%AA%E8%BF%9C%E7%A8%8B%E4%B8%BB%E6%9C%BA%E7%9A%84%E5%86%85%E5%AE%B9.png)
我正在尝试在“主”站点的 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 重定向)后,现在一切正常。