Apache 多站点设置

Apache 多站点设置

我的开发机器(Ubuntu 11.04)在 apache2 上有许多 rails 应用站点。其中一个站点配置如下。

<VirtualHost 192.168.1.7:80>
  DocumentRoot /home/ssk/dev/base3/sam/public
  ServerName base3.sam.codepremise.com
  RailsEnv development
  <directory /home/ssk/dev/base3/sam/public>
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </directory>
</VirtualHost>

同一台机器上还有许多其他类似的网站。我对固定 IP 感到不好意思。所以我更改了其中一个网站,如下所示。

<VirtualHost *:80>
  DocumentRoot /home/ssk/dev/base3/sam/public
  ServerName base3.sam.codepremise.com
  RailsEnv development
  <directory /home/ssk/dev/base3/sam/public>
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </directory>
</VirtualHost>

我重启了 Apache。但是当我从浏览器发出请求时,网站却无法工作,反而出现了其他网站。

为什么通配符不起作用?

答案1

如果您设置了多个主机来监听相同的 IP 和端口,并且您只将这一个主机的配置更改为*:80,则其他主机之一可能优先。听起来您正在尝试使用基于名称的虚拟主机(即,httpd 根据浏览器的请求为每个 ServerName 提供不同的内容),但您的配置中可能缺少一行:

NameVirtualHost *:80

阅读基于名称的虚拟主机说明,如果这听起来像您想要的,那么您可能只需要添加该行,并将所有 VirtualHosts 更改为*:80

相关内容