CNAME:跨站点重定向至子域名

CNAME:跨站点重定向至子域名

今天是个好日子,

我看过很多关于 cname 的文档,但它无法帮助我确定我的方法出了什么问题。

我被 CNAME 问题难住了。我非常希望您能给我一些建议和提示。下面就是我所针对的问题的一个例子。

假设我有域名 example.com,IP 为 000.000.000.000。我有一个客户端,比如 client1.com,其 IP 为 111.111.111.111。(IP 完全是理论上的,其余的也是如此)。

这只是我为其提供一些服务(在线目录或其他)的众多客户之一。这就是为什么我在我的服务器上通过 cpanel 创建了一个子域:client1.example.com,并将与该 client1 有关的所有脚本都放在其中。

为了让他访问这些服务,我邀请他创建指向此子域的重定向。因此,他创建了一个 CNAME 记录(通过 CPANEL):services.client1.com 26000 client1.example.com

问题:这个 cname 记录似乎指向正确的 IP 地址 (000.000.000.000)。如果有人使用浏览器访问 services.client1.com,他将到达 example.com 服务器(就 IP 而言)。但是,一旦进入 example.com 服务器,它就不知道确切的着陆位置:因此,它会进入域的默认页面。总结:

用户输入 url services.client1.com -->到达 111.111.111.111 --> 服务器表示这是一个指向 client1.example.com 的 cname --> 到达 000.000.000.000 -->服务器不知道如何处理此查询 -->提供域的默认页面(某些 cpanel cgi 脚本)。

我的问题是:是否可以在不对客户端进行任何进一步暗示(即显式重定向)的情况下配置服务器 example.com 以便它指向任何 CNAMEed 查询,例如 [l]http://services.client1.com指向专用子域名“client1.example.com”?我原本想在 example.com 的服务器上创建某种虚拟主机,但我做不到。

为此,我使用了 Centos 虚拟服务器,其中安装了 CPanel(以及 apache 服务器、php 和一些其他东西)。

我希望说清楚,任何线索都可以启发我!

祝你有个好的一天,

明智的人

答案1

当客户端尝试services.client1.com使用浏览器加载时,他将联系您服务器的 IP 地址,但浏览器仍将发送包含的主机标头services.client1.com。这很可能与您服务器上配置的任何虚拟主机都不匹配,因此 apache 会提供其默认站点。

您需要修改 apache vhost 配置,不仅要匹配主机名client1.example.com,还要services.client1.com

答案2

我已知道该怎么做了。

确实,正如 leepfrog 指出的那样,为了实现这一点,您必须修改您的 vhosts 配置文件。步骤如下(CENTos):

0-创建子域 client1.example.com

1- 转到 httpd.conf 文件 (/etc/httpd/conf/httpd.conf) 并取消注释 client1.example.com 的“include”部分。事实上,您无法在此文件中添加别名,因为它可能会定期重新生成。但是,您可以包含外部文件。include 行使您能够包含位于指定路径上的任何扩展名为 .conf 的文件。

2- 验证路径是否存在,或者如果需要则创建它,并在其中创建一个文件 .conf。任何名称都适合,只要以“.conf”结尾即可。您可以在该文件中写入以下内容:

DocumentRoot /home/user/public_html/client1
ServerAdmin [email protected]
ServerName client1.example.com
ServerALias client1.example.com service.client1.com

注意:这不是文档根目录中的“用户”,而是您的 cpanel 用户

3-重新启动 apache:/sbin/service httpd restart

从现在开始,对 service.client1.com 的任何查询都将被视为 IP 000.000.000.000 的别名。到达那里后,服务器将检查虚拟主机、进行比较,并发现 service.client1.com 是 client1.example.com 子域的别名。它提供该本地子域的内容。

瞧!

相关内容