CNAME 到通配符子域名仅获取默认服务器页面

CNAME 到通配符子域名仅获取默认服务器页面

我们的服务器配置出现了问题,我希望能够得到一些帮助,因为它让我们抓狂不已!

基本上,我们在 domain.com 上为用户设置了一个应用程序,并在同一个域上为用户设置了通配符子域。我们希望为用户实现自定义域,就像 tumblr 所做的那样,以便用户为其子域创建 CNAME,例如:

userdomain.com  -> CNAME -> user.ourapp.com

不过,在为一个用户设置完之后,他的域名只会路由到我们这边的服务器默认页面。与 plesk 联系后,回复如下:

根据内部 Web 服务器逻辑,基于名称的托管使用 HTTP 标头中的主机名进行工作。仅使用 DNS 中的 CNAME 记录将不起作用,因为 DNS 仅返回新服务器 IP,浏览器将转到该 IP,但旧服务器名称仍保留在 HTTP 标头中。

而 Web 服务器在收到这样的请求后会正常工作,它会尝试查找 userdomain.com 并打开默认虚拟主机(在我们的例子中是 Media Temple Server 页面),但没有成功。

好的,很酷。所以我们稍微编辑了一下配置。我们运行的是 Plesk 10.4,在通配符子域下,我们有一个用于 vhosts 的 httpd.include 文件。

其中有以下内容:

<VirtualHost 64.207.159.248:80>
    ServerName "_.ourapp.com:80"
    ServerAlias  "*.ourapp.com"
    UseCanonicalName Off

...

现在,我们尝试删除 ServerName 并仅保留 Alias,并使用 /etc/init.d/httpd reload 重新加载配置,但我们仍然得到默认服务器页面。

我们很困惑。

有人遇到过这个问题吗?有解决办法吗?

提前致谢,沃伦

答案1

浏览器仍会发送Host: userdomain.com标头,CNAME 记录不会导致重定向。因此,您需要ServerAlias userdomain.com在配置中使用它。您需要在应用程序中将其userdomain.com与用户关联。

相关内容