我的问题很简单,我有一个域名,比如说 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>