将子域redirect到同一服务器的不同端口上的服务

我有一个拥有1个IP的VPS。 如果我运行两个套接字服务器,一个在端口8080,另一个在端口8081,有没有一种方法可以将service1.mydomain.com映射到端口8080上的套接字服务器,将service2.mydomain.com映射到端口8081上的套接字服务器?

我没有运行Web服务器,而是运行在8080端口上的websocket服务器和8081上的套接字服务器。

我之前看到过这个问题,但似乎总是关于Apache,我可以在其中编辑VirtialHosts文件。 由于我没有使用Apache,我不能这样做。

是否有可能做到这一点? 或者我将不得不继续使用mydomain.com:8080和mydomain.com:8081?

该服务器正在运行Debian 8。

谢谢

您不能直接使用DNS名称来映射特定端口,在这种情况下,您拥有多个DNS名称的单个IP。

您最好的select是将ApacheNGinx设置为反向代理来映射基于“主机头”(或“服务器名称”)的服务端口。

以下是Apache一个示例:

 <VirtualHost *:80> ServerName service1.mydomain.com ProxyPreserveHost On ProxyPass / http://service1.mydomain.com:8080/ ProxyPassReverse / http://service1.mydomain.com:8080/ </VirtualHost> <VirtualHost *:80> ServerName service2.mydomain.com ProxyPreserveHost On ProxyPass / http://service2.mydomain.com:8081/ ProxyPassReverse / http://service2.mydomain.com:8081/ </VirtualHost> 

所以,你需要在你的Websocket服务器前设置一个反向代理。


你会得到 :

  • http://service1.mydomain.com地图和服务http://service1.mydomain.com:8080

  • http://service2.mydomain.com地图和服务http://service2.mydomain.com:8081

对最终用户透明。

您不能使用DNS将服务映射到端口。 如果打开8080和8081到Internet,任何一个域都可以用来访问任一端口。 但是,如果您发布的URL包括端口号,stream量将被适当地路由。

如果我假定这些是Web服务,那么通常的做法是在服务之前放置一个代理(可能是Apache)。 用户将请求service1.example.com或service2.example.com,代理将连接到适当的服务。 (我正在使用example.com,因为这是分配给示例的域之一)。