我正在尝试向 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
您可以尝试以下方法:
- 不要使用 DocumentRoot 指令,对于使用代理的虚拟主机,您不需要它。
- 删除
<proxy *> ... </proxy>
指令。这不用于反向代理。 - 定义 ServerAlias 指令和 ProxyTimeout
- 将 ProxyRequests 放在 ProxyPass 和 ProxyPassReverse 之前
希望它有效。
答案4
好的,我找到了错误。我所要做的就是取消注释代理子模块:
LoadModule proxy_http_module modules/mod_proxy_http.so