我有一台 ubuntu hardy 服务器,用作 Apache 2.2 的 Web 服务器。我尝试使用命名虚拟主机进行设置,在我的 /etc/apache2/apache2.conf 文件中,我有以下几行:
NameVirtualHost *
Include /etc/apache2/sites-enabled/
我在 sites-enabled 中有两个文件。其中一个包含:
<VirtualHost *>
ServerAdmin [email protected]
ServerName arcticdata.met.no
DocumentRoot /metno/metamod/arcticdata/htdocs
...
</VirtualHost>
另一个类似,但具有不同的 ServerName 和 DocumentRoot。
如果我运行 apachectl configtest 我会收到以下警告:
[warn] NameVirtualHost *:0 has no VirtualHosts
但无论如何,虚拟主机机制似乎正在发挥作用,因为在两种情况下我都得到了放置在 DocumentRoot 中的 index.html 文件。
但我也使用重定向到同一台服务器上的催化剂过程,这些重定向似乎不起作用:
ProxyPass /metamod/ http://127.0.0.1:3011/
ProxyPassReverse /metamod/ http://127.0.0.1:3011/
但是,如果我在 -directive(代替 *)中输入 IP 地址和端口号,这些重定向就会立即起作用。但是我又遇到了另一个问题。现在运行 apachectl configtest 会得到以下输出:
[warn] VirtualHost 157.249.32.169:80 overlaps with VirtualHost 157.249.32.169:80, the first has precedence, perhaps you need a NameVirtualHost directive
[warn] NameVirtualHost *:0 has no VirtualHosts
并且只有第一个虚拟主机起作用。
我也在 lucid box 上运行类似的设置,一切正常。hardy 和 lucid 之间 Apache 2.2 的配置方式有变化吗?hardy box 使用的是 Apache 2.2.8,lucid box 使用的是 Apache 2.2.14。
欢迎提出任何建议。
埃吉尔
答案1
我建议您使用 apache 手册中指定的地址:端口符号:
http://httpd.apache.org/docs/2.2/mod/core.html#namevirtualhost
可能是 apache 代码发生了一些变化,因为它看起来在 hardy 中默认为端口 0,但您的网站默认为端口 80。
例如将其更改为:
NameVirtualHost *:80
和
<VirtualHost *:80>
如果这不起作用则使用:
NameVirtualHost 157.249.32.169:80
和
<VirtualHost 157.249.32.169:80>
答案2
更正您的 apache 配置,以便适当的端口清晰。
NameVirtualHost *:80
NameVirtualHost *:443
和
<VirtualHost *:80>
</VirtalHost>