如何在服务器上配置我的 cname?

如何在服务器上配置我的 cname?

我有一个域名 foo.this.com,我想将它映射到 bar.that.com,因此我在注册界面上创建了一个 cname。但是,当我尝试访问 foo.this.com 时,它显示指向 bar.that.com 的 IP 的 404。

所以我的问题是,我需要在我的服务器(托管 bar.that.com 网页的服务器)上进行什么配置才能识别 foo.this.com?

提前致谢。

答案1

这取决于您使用的 http 守护进程。

如果您使用 Apache HTTPD虚拟主机条目,您很可能需要向您的站点的 VirtualHost 条目添加一个 ServerAlias 指令。

<VirtualHost *:80>
    ServerName bar.that.com
    ServerAlias foo.this.com
    DocumentRoot /home/that.com
    ... snip ... 
</VirtualHost>

答案2

你想做的事情属于基于名称的虚拟主机

从技术上讲,Web 浏览器会解析bar.that.comIP 地址(例如1.2.3.4)。然后它会向 发送 HTTP 请求1.2.3.4。主机通常不知道用于寻址的名称。

但是,HTTP 1.1 的一个特殊功能允许浏览器将主机名插入 HTTP 标头。典型的 HTTP 标头如下所示:

GET / HTTP/1.1
Host: bar.that.com

然后,Web 服务器根据Host:标头的内容决定要传送哪些页面。当然,您必须在配置中告诉它如何决定。对于 Apache,请参阅这里,但任何现代网络服务器都会有类似的东西。

基于名称的虚拟主机被广泛使用,每次听到共享主机一词时,请考虑基于名称的虚拟主机。HTTP 1.1 已经存在很长时间,因此所有正在使用的浏览器都支持它。只有非常非常老的浏览器(如 NCSA Mosaic)不支持它。

答案3

如果您使用的是 IIS,则需要将主机标头添加到 bar.that.com 网站,以供 foo.this.com 使用

答案4

对于 nginx,如果希望一个指令处理多个域/子域,可以将它们全部放在 server_name 指令中。例如,

server {
    listen 80;
    server_name foo.bar.com baz.foo.com bar.foo.com *.foo.com;
    [.......]
}

相关内容