Kodeeo Asked: 2019-06-24 15:47:54 +0800 CST2019-06-24 15:47:54 +0800 CST 2019-06-24 15:47:54 +0800 CST 单个服务器可以与多个域相关联吗? 772 如果我拥有x.x.x.x网络服务器,我可以在 和 上创建两个单独的站点x.x.x.x/one并x.x.x.x/two给它们两个不同的域吗? 它将如何处理案例中的内部链接(es. x.x.x.x/one/foo/page.html)? 我使用 CentOS 7 和 LAMP,以及一些网站的 WordPress domain webserver 3 个回答 Voted Best Answer Anaksunaman 2019-06-24T17:30:37+08:002019-06-24T17:30:37+08:00 单个服务器可以与多个域相关联吗? 是的。这将通过 DNS 将这些域指向您的 Web 服务器来完成。 如果我拥有“xxxx”网络服务器,我可以在“xxxx/one”和“xxxx/two”上创建两个单独的站点并给它们两个不同的域吗? 这取决于您的网络服务器软件。您当然可以将这两个域都指向您的服务器,但随后将由服务器软件来区分哪些流量是针对哪个域的。 一些较小的 Web 服务器项目不支持这种功能。但是,较大的项目通常会这样做。对于 Apache 和 Nginx,这种支持分别来自基于名称的虚拟主机和服务器块。这两个项目还支持用于 TLS (HTTPS) 连接的服务器名称指示(SNI)。 它将如何处理案例中的内部链接(es. x.x.x.x/one/foo/page.html)? 通常,您会one在例如您的虚拟主机或服务器块配置(即“主”域开始的地方)中将文件夹的完整路径设置为文档根目录。引用 eg 的页面example.com/foo/page.html将引用 eg x.x.x.x/one/foo/page.html。如果您只想使用 eg example.com/page.html,您可以将文档根目录设置为foo. WordPress WordPress 有自己的处理域的方法。在您的示例中,假设您希望 WordPress 处理这两个域,您将: 在 DNS 中指定两个域。 创建两个对应于这些域的虚拟主机(在 Apache 中)。 将每个文档根目录设置为指向您的 WordPress 安装。 配置 WordPress 为这两个域提供服务。 否则,您只需将一个文档根指向您的 WordPress 安装(并在 WordPress 中仅配置一个域)并将另一个文档根指向您的非 WordPress 文件。 笔记 对于上面的解释,我假设您的 Web 服务器设置在x.x.x.x和是您已经为服务器设置的默认文档根目录下的目录one。foo 值得一提的是,DNS 仅指向 IP 地址(例如1.2.3.4),或者在 CNAME 记录的情况下指向整个域(例如example.com)。您不能将 DNS 指向例如http://1.2.3.4/one。 有一些域名提供商可能会提供 Web 重定向(例如 to http://1.2.3.4/one),但这些都不是 DNS 的一部分。在这种情况下如何处理页面请求将(再次)完全取决于您的服务器。 最小的 Apache 虚拟主机示例 前任。常规域 <VirtualHost *:80> ServerName example1.com # ServerAlias www.example1.com, *.example1.com DocumentRoot "/path/to/www/Wordpress_Site" </VirtualHost> <VirtualHost *:80> ServerName example2.com # ServerAlias www.example2.com, *.example2.com DocumentRoot "/path/to/www/Non-Wordpress_Site" </VirtualHost> 前任。子域 <VirtualHost *:80> ServerName sub1.example.com # ServerAlias www.sub1.example.com, *.sub1.example.com DocumentRoot "/path/to/www/Wordpress_Site" </VirtualHost> <VirtualHost *:80> ServerName sub2.example.com # ServerAlias www.sub2.example2.com, *.sub2.example.com DocumentRoot "/path/to/www/Non-Wordpress_Site" </VirtualHost> Mike DeSimone 2019-06-25T20:28:48+08:002019-06-25T20:28:48+08:00 如果您使用的是 HTTPS (HTTP+TLS),请记住以下几点:事务开始时有一个特定的操作顺序: 传入连接是使用服务器的 IP 地址建立的。 协商 TLS 会话。 设置 TLS 后,HTTP 请求将传递到 HTTP 服务器。 如果您有多个 DNS 主机名指向同一个 IP 地址,则需要确保您站点的 TLS 证书涵盖服务器提供的所有主机名。在 HTTP 请求通过(第 3 步)之前,客户端不会告诉服务器它试图获取的主机名,但客户端在第 1 步之前就知道所需的主机名,并期望在第 2 步中发送给它的服务器证书具有匹配的主机名,否则浏览器可能会显示“此服务器可能被冒充”警告屏幕。 如果您有通配符证书并且所有主机名都在该证书涵盖的域中,这将非常简单。如果您需要向您的证书提供商提供主机名列表(又名“主题替代名称”)以便将它们全部包含在内,它会变得更加棘手。 在第 3 步之前,有一种 TLS 重新协商机制可能能够根据主机名提供不同的证书,但它不稳定,大多数服务器都没有配置它。配置 Web 服务器以提供一个证书要容易得多。 vlumi 2019-06-24T16:14:34+08:002019-06-24T16:14:34+08:00 有可能,具体配置取决于您的 Web 服务器。例如,对于 Apache,请参见此处。 您需要让两个域的 DNS 都指向您服务器的 IP 地址——不过,只有其中一个可以设置为反向地址(IP 到域名解析)。
是的。这将通过 DNS 将这些域指向您的 Web 服务器来完成。
这取决于您的网络服务器软件。您当然可以将这两个域都指向您的服务器,但随后将由服务器软件来区分哪些流量是针对哪个域的。
一些较小的 Web 服务器项目不支持这种功能。但是,较大的项目通常会这样做。对于 Apache 和 Nginx,这种支持分别来自基于名称的虚拟主机和服务器块。这两个项目还支持用于 TLS (HTTPS) 连接的服务器名称指示(SNI)。
通常,您会
one
在例如您的虚拟主机或服务器块配置(即“主”域开始的地方)中将文件夹的完整路径设置为文档根目录。引用 eg 的页面example.com/foo/page.html
将引用 egx.x.x.x/one/foo/page.html
。如果您只想使用 egexample.com/page.html
,您可以将文档根目录设置为foo
.WordPress
WordPress 有自己的处理域的方法。在您的示例中,假设您希望 WordPress 处理这两个域,您将:
在 DNS 中指定两个域。
创建两个对应于这些域的虚拟主机(在 Apache 中)。
将每个文档根目录设置为指向您的 WordPress 安装。
配置 WordPress 为这两个域提供服务。
否则,您只需将一个文档根指向您的 WordPress 安装(并在 WordPress 中仅配置一个域)并将另一个文档根指向您的非 WordPress 文件。
笔记
对于上面的解释,我假设您的 Web 服务器设置在
x.x.x.x
和是您已经为服务器设置的默认文档根目录下的目录one
。foo
值得一提的是,DNS 仅指向 IP 地址(例如
1.2.3.4
),或者在 CNAME 记录的情况下指向整个域(例如example.com
)。您不能将 DNS 指向例如http://1.2.3.4/one
。有一些域名提供商可能会提供 Web 重定向(例如 to
http://1.2.3.4/one
),但这些都不是 DNS 的一部分。在这种情况下如何处理页面请求将(再次)完全取决于您的服务器。最小的 Apache 虚拟主机示例
前任。常规域
前任。子域
如果您使用的是 HTTPS (HTTP+TLS),请记住以下几点:事务开始时有一个特定的操作顺序:
如果您有多个 DNS 主机名指向同一个 IP 地址,则需要确保您站点的 TLS 证书涵盖服务器提供的所有主机名。在 HTTP 请求通过(第 3 步)之前,客户端不会告诉服务器它试图获取的主机名,但客户端在第 1 步之前就知道所需的主机名,并期望在第 2 步中发送给它的服务器证书具有匹配的主机名,否则浏览器可能会显示“此服务器可能被冒充”警告屏幕。
如果您有通配符证书并且所有主机名都在该证书涵盖的域中,这将非常简单。如果您需要向您的证书提供商提供主机名列表(又名“主题替代名称”)以便将它们全部包含在内,它会变得更加棘手。
在第 3 步之前,有一种 TLS 重新协商机制可能能够根据主机名提供不同的证书,但它不稳定,大多数服务器都没有配置它。配置 Web 服务器以提供一个证书要容易得多。
有可能,具体配置取决于您的 Web 服务器。例如,对于 Apache,请参见此处。
您需要让两个域的 DNS 都指向您服务器的 IP 地址——不过,只有其中一个可以设置为反向地址(IP 到域名解析)。