如何让子域名指向不同的本地IP地址?

如何让子域名指向不同的本地IP地址?

我有一个指向静态 IP 地址的域名 mydomain.com。我已在调制解调器中进行了配置,以便所有对此静态 IP 的端口 80 的请求都将到达我的本地计算机 192.168.1.100(Web 服务器)。

现在我想让 2 个子域指向另外 2 个本地 IP:
sub1.mydomain.com ---> 192.168.1.101(托管另一个 Web 服务器)
sub2.mydomain.com ---> 192.168.1.102(托管 redmine 服务器)

这可能吗?如果可以,请告诉我怎么做?

我使用 Ubuntu Server 12。

答案1

回答感谢乔什·P服务器故障

我最近才这样做。请参阅我的问题。这是一个漫长的来回过程,但我最终还是把它设置好了。

  • 设置 DNS。A 记录将指向您的公共 IP。因此,yourdomain.com 指向 your.pub.ip.add。为子域添加 CNAME 记录。因此,sub1.yourdomain.com 指向@,sub2.yourdomain.com 指向@,等等。尽管子域都指向同一个地址,但浏览器将告知 Web 服务器您要访问哪个子域。

  • 设置 Apache。您需要为每个子域设置虚拟主机(可能也为主域设置)。您可以在不同位置定义虚拟主机...我的虚拟主机定义在 中 /etc/apache2/sites-available,并包含<Location> 指令,您将在其中设置反向代理。

这个答案是在 ServerFault 中提供给 OP 的。

答案2

最简单的方法是修改您的hosts文件,该文件位于 中/etc/

它看起来像这样:

# This is an example of the hosts file
127.0.0.1  localhost loopback
192.168.1.100 webserver
192.168.1.101 sub1
192.168.1.102 sub2

答案3

除非您也安装并配置 DNS 服务器并让您的客户端使用它,否则您局域网上的客户端也需要更新其主机文件。dnsmasq 很简单,配置文件中有很多有用的注释。BIND 是另一个,但它的配置文件使用了一种奇怪的、无意义的语法,没有人真正理解。Unbound 是另一个非常注重安全性的。

答案4

如果我理解正确的话,您只有 1 个公共 IP 地址(本质上只有 1 个 tcp 端口 80),但您想要运行 3 个 Web 服务器,其中只有 1 个可以直接公开访问(通过端口转发)。

您需要配置两件事:

  1. DNS 级别:确保 www. sub1. sub2. 都指向与 mydomain.com 相同的地址。这可以在 DNS 注册商的配置面板中完成(如果可用,请查找“通配符”选项)。这应该允许您 ping sub1.mydomain.com 和所有其他子域。
  2. 由于所有请求都到达服务器 192.168.1.100,因此您需要配置此 Web 服务器以将子域的请求转发到其他(内部)服务器。

如果您使用主 Web 服务器 (.100) 作为子域 sub1 和 sub2 的反向代理,则可以访问其他服务器。

我认为这可能是一个很好的例子:带有说明的示例 httpd.conf

注意:在 ProxyPass 和 ProxyReverse 行中,您必须使用内部主机名或 IP 地址,而不是 sub1.mydomain.com,因为这会导致循环!

如果该网站不适用,以下是谷歌搜索词:vhost 反向代理

祝你好运!

相关内容