通过 Apache 将子域指向另一个 IP

Posted

技术标签:

【中文标题】通过 Apache 将子域指向另一个 IP【英文标题】:Pointing a subdomain to another IP via Apache 【发布时间】:2011-06-25 01:58:14 【问题描述】:

是否可以仅使用 Apache 将子域指向特定 IP 地址?

我们目前有一个包含 250 多个子域(site1.example.com、site2.example.com 等)的主域 (www.example.com)。由于有关 SSL 证书的规则,我们现在必须将 www.example.com 放在它自己的 IP 地址上(尽管它仍然驻留在同一台服务器上)。

子域当前配置为别名记录,因此为每个子域创建 250 多个新的 A 记录将是一个很大的麻烦。

我希望有一个基于 Apache 的解决方案来解决这个问题,这样我就不必在剩下的时间里配置 DNS 记录了。

【问题讨论】:

我已投票决定将其移至 serverfault.com,因为我认为这会更合适。如果其他人同意,它将(可能)自动移动。 谢谢,我是 StackExchange 网络的新手,不知道 serverfault.com 的存在。 【参考方案1】:

您可以让mod_proxy 将所有请求从一个虚拟主机传递到另一台服务器,这听起来正是您正在寻找的。​​p>

<VirtualHost *:80>
        ServerAdmin you@your.com
        ServerName your.vhost.your.com

        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
        ProxyErrorOverride On
        ProxyPass / http://your.realhost.com/
        ProxyPassReverse / http://your.realhost.com/
        <Location />
                Order allow,deny
                Allow from all
        </Location>

</VirtualHost>

您也可以使用 mod_rewrite 和 [P] 选项来执行此操作,这可以为您提供更多的灵活性。

【讨论】:

谢谢,我会用它做一点测试,如果它满足我的需求,我会回来奖励你的答案。 不确定这对 SSL 的效果如何——至少,您还需要设置 *:443https:;我不确定在代理的情况下将使用哪个 SSL 证书。 暴露的 SSL 证书将是使用 mod_proxy 的服务器之一。假设它是通配符证书或获得证书中列出的所有域,它将正常工作。您实际上也必须使用 SSL 从代理到真实服务器。 @awoodland:我环顾四周玩了一下,有点困惑。我只是想确保我正确理解了这个概念。 your.vhost.your.com 应该是 site1.example.comhttp://your.realhost.com 应该是 www.example.com。对吗? 假设我已经正确理解了您的问题,realhost 是您真正想要为请求提供服务的服务器的 IP 或 DNS 名称,而 your.vhost.your.com 是DNS 别名

以上是关于通过 Apache 将子域指向另一个 IP的主要内容,如果未能解决你的问题,请参考以下文章

如何将子域指向 Heroku 应用程序,将根域指向另一个 Heroku 应用程序?

Codeigniter 子域路由

将子域指向 Django 中的特定 url

NGINX - 将子域指向不是域目录子目录的不同目录

AWS:将子域指向不同的弹性 beanstalk 环境

带有通配符/非通配符子域混合的 Apache Config