今天是个好日子,
我看过很多关于 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 子域的别名。它提供该本地子域的内容。
瞧!