![AT&T Uverse 中的 NAT:不同域的多个 Web 服务器](https://linux22.com/image/1562837/AT%26T%20Uverse%20%E4%B8%AD%E7%9A%84%20NAT%EF%BC%9A%E4%B8%8D%E5%90%8C%E5%9F%9F%E7%9A%84%E5%A4%9A%E4%B8%AA%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我在家庭网络上的几台不同计算机上托管了几个不同的网站。我正在尝试配置防火墙设置,使其允许 HTTP 流量流向这两台计算机,并通过域名区分它们。这可以做到吗?如何让同一本地网络上的两个不同 HTTP 服务器在互联网上可见?
答案1
假设您有一个公共 IP 地址,您不能使用相同的端口(80)在多台服务器上托管多个 http 站点。
为了实现此功能,您需要为每个服务器使用唯一的端口,例如 80、81 和 82。这还需要为每个服务器使用唯一的 URL:
http://webserver1.com
http://webserver2.org:81
http://webserver3.net:82
在这种情况下,只需将唯一的端口转发到每个服务器,并在浏览器中输入的 URL 中替换该端口。
但是,如果所有网站都作为虚拟站点托管在同一个服务器(如 IIS 或 Apache)上,这将是可能的,它是 http/1.1 规范的一部分,并使用 HOST 参数来请求它正在寻找的站点名称。
如果这些是 HTTPS 站点,那就别想了。每个站点都必须有自己独特的公共 IP 地址。SSL 密钥交换和证书验证发生在 http 事务之前,因此 http 服务器不知道要为 webserver1.com 或 webserver2.net 提供证书