设置子域名来服务

设置子域名来服务

我已经设法让 2 个子域名在线程,但它仅适用于 Apache。

我想要一个指向服务器上运行的某项服务的子域名。例如,我有一个 Cod4(端口 28960)和一个 Minecraft 服务器(端口 25565)正在运行。输入以下命令即可访问这两个服务器域名.com。我想更改它,所以你必须输入cod.domain.commc.域名.com进入服务器。如果你直接输入域名.com(尽管如果您使用浏览器进入,它仍然会显示该网站)。

这可能吗?如果可能,怎么做?使用 Google 我无法找到任何教程。我只能找到 Apache 的教程(这不是我想要的)。

使用 Ubuntu 10.04 x64。

答案1

DNS 的工作方式并非如此。对于网站(及其服务器),其工作方式如下:

  1. 用户在 askubuntu.com 上打卡
  2. 浏览器向操作系统的网络堆栈请求从域名到 IP 的解析
  3. 这些信息会流向注册商,然后注册商会链接到该域名的域名服务器
  4. 名称服务器为浏览器提供链上的 IP
  5. 浏览器连接到 IP(隐式在端口 80 上)并发送 GET 请求:

    GET / HTTP/1.1
    Host: askubuntu.com
    
  6. 如果服务器守护进程支持它,它将查看该Host段,然后决定以哪个虚拟主机来处理请求。

这就是您可以使用同一 IP 地址托管多个网站的方法。

但是 HTTP 及其服务器很特殊;这种域感知请求是经过多年开发的。大多数服务器守护进程并不关心 DNS。它们真正关心的是它们托管在哪个接口或 IP 和端口上,以及它们允许从哪里进行连接。

这是 COD4 或 Minecraft 服务器的情况。他们被告知要托管在哪个接口和端口上,但仅此而已。当 COD4 客户端连接时,它会执行相同的 DNS 解析(直到第 4 部分),但客户端不会发送域名,服务器也不会在意是否发送。

简而言之,您可以坚持使用任何解析为您的游戏服务器 IP 的域。


要使此操作按您希望的方式进行,唯一的方法是确保您的无子域名指向游戏服务器的不同 IP 地址。您可以这样做。大多数主机允许购买额外的域名,因此您可以:

  • example.com以及,www.exmaple.com1.1.1.1
  • cod.example.com1.1.1.2,并且
  • mc.example.com1.1.1.3

这些值得吗?不值得。而且坦白说,这是对 IPv4 IP 的浪费,而 IPv4 IP 本来就是一种稀缺资源。

相关内容