我见过不同的版本,但没有一个能明确满足我的需要。我有一个安装了通配符证书的 Apache 服务器。现在我想让 Apache 做两件事:
1) 监听 http 上的请求并永久请求每个站点的 https。2) 将该 https 请求代理到仅在端口 80 上监听的内部服务器。
我确信我将拥有多个虚拟主机条目,并假设 CName 为 www.mydomain.com、test.mydomain.com、staging.mydomain.com。它们全部指向同一个 IP,即我的 Apache 服务器。
因此,当请求到达时,http://www.mydomain.com
应将其重定向https://www.mydomain.com
到 192.168.20.200 的内部服务器,然后通过代理http://test.mydomain.com
转发。当请求到达 192.168.20.201 时,应将其https://test.mydomain.com
重定向到 192.168.20.201,然后通过代理转发……依此类推。
据我猜测,www.mydomain.com 的虚拟主机应该是这样的:
名称虚拟主机 *:80
<VirtualHost *:80>
ServerName www.mydomain.com
Redirect permanent / `https://www.mydomain.com/`
</VirtualHost>
<VirtualHost *:443>
ServerName www.mydomain.com
ProxyPass / `http://192.168.20.200/`
ProxyPassReverse / `http://192.168.20.200/`
</VirtualHost>
我不确定这是否是正确的方法(我已经看到一些使用重写的示例)并且我不确定每个域是否需要两个虚拟主机条目。
有人可以验证这是正确的方法吗?此 Apache 将成为此域中多个主机的反向代理。
答案1
对于要执行的操作,您已进行了正确的设置。
可以删除 URL 周围的斜线。