Kod*_*eeo 16 domain website webserver
如果我拥有x.x.x.x网络服务器,我可以在x.x.x.x/one和上创建两个单独的站点x.x.x.x/two并为它们提供两个不同的域吗?
在这种情况下,它将如何处理内部链接(例如x.x.x.x/one/foo/page.html)?
我在一些网站上使用 CentOS 7 和 LAMP,以及 WordPress
Ana*_*man 37
单个服务器可以与多个域相关联吗?
是的。这可以通过通过 DNS 将这些域指向您的 Web 服务器来完成。
如果我拥有“xxxx”网络服务器,我可以在“xxxx/one”和“xxxx/two”上创建两个单独的站点并给它们两个不同的域吗?
这取决于您的 Web 服务器软件。您当然可以将两个域都指向您的服务器,但是接下来取决于服务器软件来区分哪个流量用于哪个域。
一些较小的 Web 服务器项目不支持这种功能。但是,较大的项目通常会这样做。在 Apache 和 Nginx 的情况下,这种支持分别来自基于名称的虚拟主机和服务器块。这两个项目还支持用于 TLS (HTTPS) 连接的服务器名称指示(SNI)。
在这种情况下,它将如何处理内部链接(例如
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 重定向(例如到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>
Run Code Online (Sandbox Code Playgroud)
前任。子域
<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>
Run Code Online (Sandbox Code Playgroud)
如果您使用 HTTPS (HTTP+TLS),请记住以下几点: 事务开始时有特定的操作顺序:
如果您有多个 DNS 主机名指向同一 IP 地址,则需要确保您站点的 TLS 证书涵盖您的服务器提供的所有主机名。客户端不会告诉服务器它尝试获取的主机名,直到 HTTP 请求通过(步骤 3),但客户端在步骤 1 之前就知道所需的主机名,并期望在步骤 2 中发送给它的服务器证书具有匹配的主机名,否则浏览器可能会显示“此服务器可能被冒充”警告屏幕。
如果您有通配符证书并且所有主机名都在该证书覆盖的域中,那么这非常简单。如果您需要向证书提供商提供主机名列表(也称为“主题备用名称”)以便将它们全部包含在内,事情会变得更加棘手。
在步骤 3 之前,有一种 TLS 重新协商机制可能能够根据主机名提供不同的证书,但它不稳定,并且大多数服务器不配置它。配置 Web 服务器来提供一个证书要容易得多。