将子域名重定向到同一服务器不同端口上的服务

将子域名重定向到同一服务器不同端口上的服务

我有一台具有 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。

谢谢

答案1

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

最好的选择是设置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

对于最终用户来说是透明的。

答案2

您无法使用 DNS 将服务映射到端口。如果您向 Internet 开放 8080 和 8081,则可以使用任一域访问任一端口。但是,如果您发布的 URL 包含端口号,则流量将被适当路由。

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

相关内容