Apache ProxyPass 在没有 SSL 的情况下转发多个子域时出现问题

Trouble With Apache ProxyPass Forwarding Multiple Subdomains One Without SSL

首先,对于另一个 ProxyPass 问题,我深表歉意,我已经阅读了很多问题,并提供了答案,但我仍然无法确定我做错了什么。

我有 3 个 sudomains: cloud.example.com wiki.example.com other.example.com.

other.example.com 在使用 https

的主机 A 上 运行 正常

cloud.example.com 在使用 ProxyPass 转发后 运行 在主机 B 上使用 https 正常

wiki.example.com 刚刚作为侦听其他端口的应用程序添加到主机 A 上,目前只有 http,直到我解决此问题并使用 Lets Encrypt 和 certbot 配置 SSL

目前,当浏览到其他子域和云子域时,它们会根据需要自动重定向到 https 页面。

当浏览到 wiki 子域时,它也会被重定向到它未监听的 https,然后在地址栏中显示 wiki.example.com,同时提供 domain/other.subdomain 内容。我已经使用 IP 和端口验证它是 运行 并在 http 上侦听。 apache 访问日志中的消息显示 apache 正在接收 https 请求并且找不到 https://wiki.example.com.

x.x.x.x - - [29/Jan/2022:14:05:16 -0700] "GET /favicon.ico HTTP/1.1" 404 513 "https://wiki.example.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36"

我一直主要使用 firefox,在禁用所有强制 https 的功能并从库中删除与我的网站相关的所有条目后,问题仍然存在。然后我尝试了从未用于该站点的铬,但问题仍然存在。

我无法确定为什么将 wiki 子域重定向到 https。下面是云子域工作的 example.com.conf 部分,以及尝试使用 wiki 子域的地方。我试过没有额外的重写规则,其他答案中列出了其他规则,但没有任何改变。

我猜我在某处有一个强制所有连接到 https 的 apache 配置,但我找不到它在哪里。

<VirtualHost *:80>
    ServerName cloud.example.com
    ServerAlias cloud.example.com
    ProxyPreserveHost On
    ProxyPass / http://host B IP/
    ProxyPassReverse / http://Host B IP/
RewriteEngine on
RewriteCond %{SERVER_NAME} =cloud.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<VirtualHost *:80>
        ServerName wiki.example.com
        ServerAlias wiki.example.com
        ProxyPreserveHost On
        ProxyPass / http://Host A IP:3000/
        ProxyPassReverse / http://Host A IP:3000/
RewriteEngine on
RewriteCond %{SERVER_NAME} =wiki.example.com
RewriteRule ^ http://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

不是 100% 确定为什么,但是在使用私有模式从另一个来源连接后它加载正常,然后开始从任何地方正常加载。奇怪,但已解决。