将 DNS 定向到不同的端口

将 DNS 定向到不同的端口

大家好,

我有一台带有两个 tomcat 服务的服务器(一个在端口 80 上运行,另一个在 8080 上运行)。

我想要实现的是为这两个端口设置两个不同的 DNS 记录,以便可以通过以下方式访问它们:

http://example1/
http://example2/

代替

http://example1/
http://example1:8080/

我知道使用 DNS A 记录无法实现这一点,但有人知道我可以研究的其他解决方案吗?

谢谢,

安德鲁

答案1

您无法在 DNS 级别执行此操作。

您可以做的是让您的 server1(端口 80)保持原样记录,然后创建 server2 记录(您可以使用相同的 IP)并将 http 重定向到 server1:8080(您可以使用 apache 重写来执行此操作):

<VirtualHost IP:80>
ServerName server2
RewriteEngine on
RewriteRule ^(.*)$ http://server1:8080/ [R,L]
</VirtualHost>

答案2

DNS 在这里无法帮助您:它知道的唯一端口是它自己的端口(53)和 SRV 记录中编码的端口。

如果我没记错的话,Tomcat 允许您设置基于名称的虚拟主机,这听起来就像您想要的(将您的应用程序放在不同的命名虚拟主机中,而不是不同的端口上)。

将“端口 8080”应用程序移动到另一个 IP 上的端口 80 也是一个选择。

如果你需要将应用程序保留在端口 8080 上,那么巧妙地使用mod_rewrite或者 HTTP/301 重定向可以执行您想要的操作(“如果主机是“example2”,则将用户重定向到端口 8080”)。更深层次的复杂性留给读者作为(痛苦的)练习。

答案3

假设网站可以绑定到单独的 IP,您还应该能够使用两个 NAT 规则在防火墙级别解决此问题。您将其中一个网站从外部端口 80 NAT 到内部端口 8080。

顺便说一句,我更喜欢 8080 以外的端口,因为该端口通常用于 Web 代理。

相关内容