我有一个指向静态 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
我最近才这样做。请参阅我的问题。这是一个漫长的来回过程,但我最终还是把它设置好了。
设置 DNS。A 记录将指向您的公共 IP。因此,yourdomain.com 指向 your.pub.ip.add。为子域添加 CNAME 记录。因此,sub1.yourdomain.com 指向
@
,sub2.yourdomain.com 指向@
,等等。尽管子域都指向同一个地址,但浏览器将告知 Web 服务器您要访问哪个子域。设置 Apache。您需要为每个子域设置虚拟主机(可能也为主域设置)。您可以在不同位置定义虚拟主机...我的虚拟主机定义在 中
/etc/apache2/sites-available
,并包含<Location>
指令,您将在其中设置反向代理。
答案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 个可以直接公开访问(通过端口转发)。
您需要配置两件事:
- DNS 级别:确保 www. sub1. sub2. 都指向与 mydomain.com 相同的地址。这可以在 DNS 注册商的配置面板中完成(如果可用,请查找“通配符”选项)。这应该允许您 ping sub1.mydomain.com 和所有其他子域。
- 由于所有请求都到达服务器 192.168.1.100,因此您需要配置此 Web 服务器以将子域的请求转发到其他(内部)服务器。
如果您使用主 Web 服务器 (.100) 作为子域 sub1 和 sub2 的反向代理,则可以访问其他服务器。
我认为这可能是一个很好的例子:带有说明的示例 httpd.conf
注意:在 ProxyPass 和 ProxyReverse 行中,您必须使用内部主机名或 IP 地址,而不是 sub1.mydomain.com,因为这会导致循环!
如果该网站不适用,以下是谷歌搜索词:vhost 反向代理
祝你好运!