我想解释一下我们所处的场景,然后提出这个问题:
我们有域名:
- www.example.com
以及以下子域名:
- forum.example.com
- portal.example.com
- crm.example.com
以及托管在单独服务器上的以下应用程序:
- 论坛-服务器 IP:1.1.1.1,港口:1010
- 门户网站-服务器 IP:2.2.2.2,港口:2020
- 客户关系管理-服务器 IP:3.3.3.3,港口:3030
所有服务器都在防火墙后面运行
另一方面,我们只有一个公共 IP 地址:
10.10.10.10
因此,为了将本地服务器与公共 IP 链接起来,我们可以在防火墙中创建虚拟主机条目并创建公共端口,如下所示:
- 10.10.10.10:1010 将指向 1.1.1.1:1010
- 10.10.10.10:2020 将指向 2.2.2.2:2020
- 10.10.10.10:3030 将指向 3.3.3.3:3030
然后我们将在DNS ZONE中配置以下A NAME记录:
- www.example.com-10.10.10.10
所以去论坛应用程序中,用户必须输入:
- www.example.com:1010
等等:
- www.example.com:2020 为门户网站
- www.example.com:3030 为客户关系管理
现在,我们不再使用端口号,而是使用子域,例如,如果用户想要访问论坛,他只需输入:
- 论坛.example.com
其他应用程序也同样如此。
不为每个应用程序购买新的公共 IP 地址是否可以做到这一点?
抱歉发了这么长的帖子。谢谢
答案1
我认为您的各种应用程序都可以通过 HTTP/HTTPS 访问。在这种情况下,您有几个常用选项。
- 让您的 Web 服务器代理其他三个子域(www 也是一个子域)提供服务。
- 安装 HTTP/HTTPS 代理来代理所有子域(以及域)。
您可以先选择一个选项,稍后再更改为另一个。某些应用程序容器具有用于 Web 服务器的插件,这些插件会添加特定于容器的代理标头。
如果您使用 HTTPS,则需要证书上每个域的主题备用名称。或者,您可以在前端(Web 服务器或代理)使用 SNI 向客户端提供正确的证书(仅限支持 SNI 的客户端)。