如何为基于 ip 的请求设置不同的 documentroot,以及为基于域的请求设置不同的 documentroot

如何为基于 ip 的请求设置不同的 documentroot,以及为基于域的请求设置不同的 documentroot

我的问题很简单,我有一个域名,比如说 example.com,而我的服务器的 IP 地址是 192.168.0.1。

我想设置 2 个不同的虚拟主机,因此当用户在浏览器中输入 IP 地址 (192.168.0.1) 时,他将看到来自这里的内容:/var/www/staging

但是如果用户输入 example.com,他将看到来自这里的内容:/var/www

我认为这是可能的,但我尝试了一下却无法使其发挥作用。

另外,我不想进行简单的重定向。我知道我可以,但我需要我的两个应用程序(实时和暂存)在同一台服务器上以根方式运行。我无法购买第二个域名,也无法关联新的 IP 地址。

答案1

这当然是有可能的。

对于基于名称的虚拟主机,没有Host:标头或标Host:头设置为 IP 地址的请求将转到默认虚拟主机。

Host:带有设置为的标头的请求example.com将转到在或ServerName指令中列出的与该名称匹配的第一个虚拟主机ServerAlias

您可以使用它apache2ctl -S来查看当前配置了哪些虚拟主机以及哪一个是默认的。

答案2

如果你只使用基于名称的虚拟主机. 使用 A 记录将 example.com 和 staging.example.com 指向机器的 IP 地址,然后让两个虚拟主机适当配置等待响应

Listen 80
NameVirtualHost *:80
<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com
    ...
</VirtualHost>

<VirtualHost *:80>
    ServerName staging.example.com
    DocumentRoot /var/www/staging.example.com
    ...
</VirtualHost>

相关内容