为什么 ProxyPass 不能在带有虚拟主机的 Apache Hardy Box 中工作?

为什么 ProxyPass 不能在带有虚拟主机的 Apache Hardy Box 中工作?

我有一台 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>

相关内容