一个服务器有两个应用程序的DNS名称

我有两个应用程序运行在一台Linux服务器上,但在不同的端口上。 据我所知,DNS名称是IP地址。 我们不能为一个服务器为不同的端口创build两个主机名。

我希望DNS名称也包含端口。 这怎么可能。 如果我为test.abc.com创build了一个10.77.70.90的DNS条目,我的两个应用程序将使用这个URL test.abc.com:8080 test.abc.com:8081

请帮忙谢谢

不可能在DNS中包含端口信息 – 正如您所知,DNS仅提供第3层信息,仅提供IP地址(SRVlogging除外,其中经常包含端口信息,但不幸的是,Web浏览器不支持SRVlogging) 。

包括端口号码在你的url将工作正常,虽然。

另一种select是使用代理(nginx,mod_proxy等)将stream量代理到您的应用程序。 使用这种方法,您可以执行映射,如:

http://app1.test.abc.com -> http://test.abc.com:8080 http://app2.test.abc.com -> http://test.abc.com:8081 

Apache反向代理是要走的路。 我在这里回答了类似的问题 。 以EEAA给出的答案为例,我会推荐以下内容。

所以基本上你的应用程序运行在同一台机器上 – 又名localhost – 但是为不同的端口设置:8080和8081。设置它们并确保它们在这些端口上运行。 他们运行良好? 大! 现在将DNS条目设置为指向app1.test.abc.comapp2.test.abc.com到10.77.70.90,并在主机为10.77.70.90的内容的机器上设置以下Apache。

首先使用Apache来设置虚拟主机并启用modules proxyproxy_http

 sudo a2enmod proxy sudo a2enmod proxy_http 

然后通过在你的标准Apache2configuration目录下的ports.conf查找以下内容,确保你的主Apacheconfiguration中的虚拟主机支持被激活。 如果不是主动的,应该有一些注释掉,如下所示:

 NameVirtualHost *:80 

然后按如下方式设置虚拟主机。 这是app1.test.abc.com的虚拟主机configuration:

 <VirtualHost *:80> ServerName app1.test.abc.com ServerAlias app1.test.abc.com RewriteEngine On RewriteCond %{HTTP_HOST} !^app1\.test\.abc\.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://app1.test.abc.com/$1 [L,R] <IfModule mod_proxy.c> # Proxy specific settings ProxyRequests Off ProxyPreserveHost On <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </IfModule> </VirtualHost> 

这是app2.test.abc.com的虚拟主机configuration:

 <VirtualHost *:80> ServerName app2.test.abc.com ServerAlias app2.test.abc.com RewriteEngine On RewriteCond %{HTTP_HOST} !^app2\.test\.abc\.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://app2.test.abc.com/$1 [L,R] <IfModule mod_proxy.c> # Proxy specific settings ProxyRequests Off ProxyPreserveHost On <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:8081/ ProxyPassReverse / http://localhost:8081/ </IfModule> </VirtualHost> 

都好? 重新启动Apache服务器,看看当你去app1.test.abc.comapp2.test.abc.com 。 如果一切顺利,您的端口8080和8081应用程序应显示在每个url。