当我包含 httpd-vhosts.conf 时,默认的 apache 站点没有显示!问题出在哪里?

当我包含 httpd-vhosts.conf 时,默认的 apache 站点没有显示!问题出在哪里?

我正在尝试向 apache 添加两个虚拟主机。

在 httpd.conf 中我取消注释以下几行:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_module modules/mod_proxy_connect.so
Include conf/extra/httpd-vhosts.conf

我将这些添加到 httpd-vhosts.conf;

<Directory "C:/dev/cfusion">
    Order allow,deny
    Allow from all
</Directory>

NameVirtualHost *:80

<virtualhost *:80>  
    DocumentRoot "C:\dev\cfusion"
    ServerName cfusion
    ProxyRequests Off  
<proxy *>  
    Order deny,allow  
    Allow from all  
</Proxy>  
    ProxyPass / http://127.0.0.1:8080/cfusion/  
    ProxyPassReverse / http://127.0.0.1:8080/cfusion/  
    ErrorLog "logs/cfusion.local-error.log"
    CustomLog "logs/cfusion.local-access.log" common
</VirtualHost>

<virtualhost *:80>  
    DocumentRoot "C:\dev\cfusion"
    ServerName railo
    ProxyRequests Off  
<proxy *>  
    Order deny,allow  
    Allow from all  
</Proxy>  
    ProxyPass / http://127.0.0.1:8080/railo/  
    ProxyPassReverse / http://127.0.0.1:8080/railo/  
    ErrorLog "logs/railo.local-error.log"
    CustomLog "logs/railo.local-access.log" common
</VirtualHost>

当我评论 Include 时,我会看到默认的 Apache 站点,否则我会收到 500 内部服务器错误。问题是什么?

当我取消评论时

ProxyPass / http://127.0.0.1:8080/railo/

然后我就不再收到 500 错误,但是代理不起作用 :(

答案1

虽然这可能不是问题的根源,但这看起来像一个错误:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_module modules/mod_proxy_connect.so
Include conf/extra/httpd-vhosts.conf

第二行应该是:

LoadModule proxy_connect_module modules/mod_proxy_connect.so

答案2

也许是因为 xml 标签以小写开头,以大写结尾。

IE<proxy *> ... </Proxy>

我这里没有 Apache 可以测试,但可以尝试一下

答案3

您可以尝试以下方法:

  1. 不要使用 DocumentRoot 指令,对于使用代理的虚拟主机,您不需要它。
  2. 删除<proxy *> ... </proxy>指令。这不用于反向代理。
  3. 定义 ServerAlias 指令和 ProxyTimeout
  4. 将 ProxyRequests 放在 ProxyPass 和 ProxyPassReverse 之前

希望它有效。

答案4

好的,我找到了错误。我所要做的就是取消注释代理子模块:

LoadModule proxy_http_module modules/mod_proxy_http.so

相关内容