![一台主机配备 2 台 Web 服务器,其中一台配备 SSL](https://linux22.com/image/676462/%E4%B8%80%E5%8F%B0%E4%B8%BB%E6%9C%BA%E9%85%8D%E5%A4%87%202%20%E5%8F%B0%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E5%85%B6%E4%B8%AD%E4%B8%80%E5%8F%B0%E9%85%8D%E5%A4%87%20SSL.png)
我有一台运行 Ubuntu Server 14 的主机,还有几个运行 Ubuntu Server 14 的客户虚拟机。
我有两个运行 Web 服务器的虚拟机。端口 80 转发到具有标准站点 (controlpanel.mysite.com) 的计算机,还有另一个运行需要 443 的站点 (cloud.mydomain.com) 的虚拟机。路由器中设置了 443 以转发到虚拟机,并且机器上启用了重定向。如果可能的话,我希望将端口 80 重定向到该计算机(如果它与传入的名称匹配)。当人们输入http://cloud.mydomain.com它们被带到了端口 80 (controlpanel.mysite.com),这不是我希望它们查看的网站。我希望它直接转到 cloud.mydomain.com。
我尝试按照此网站中的示例进行操作https://httpd.apache.org/docs/trunk/vhosts/examples.html没有运气。有什么想法吗?
答案1
考虑到没有必要将所有这些网站都放在单独的虚拟机上,请在您的主机上配置 Apache,以使用 VirtualHost 指令为所有网站提供服务。
您将在 HTTPS 上拥有一个<VirtualHost *:80>
用于 controlpanel.mysite.com 的 DNS、一个用于 cloud.mydomain.com 的 DNS 和一个<virtualHost *:443>
用于 cloud.mydomain.com 的 DNS。所有这些域名的 DNS 都应解析为您的主机的 IP。
当请求进入 Apache 时,它会检查协议(http / https),然后检查请求的域名并相应地提供适当的网站。
答案2
假设您想将 Web 服务器放在单独的虚拟机上,您需要一个可以根据 HTTP 主机标头选择要发送流量的虚拟机的设备。简单的 IP 级端口转发无法做到这一点。大多数反向代理都可以。例如,清漆罐。您需要另一台运行 varnish 的虚拟机,或者如果您在这两台虚拟机中的一台上运行它,则需要让它监听另一个端口。例如,让它监听端口 8080 并将端口 80 转发到 8080。