【发布时间】:2013-01-24 09:02:53
【问题描述】:
以前,我正确设置了 Apache HTTP 以将端口 80 上的传入 HTTP 请求转发到端口 8080 上运行的 Tomcat 实例。但是,现在我处于需要能够代理端口上的传入请求的情况80 到 Tomcat @ 8080 或不同的进程 @ 9000,具体取决于主机名。下面是我尝试设置我的 Apache 配置来处理这种情况的 sn-p:
<VirtualHost *:80>
ServerName hostname1
ProxyPreserveHost On
ProxyPass / http://hostname1:8080/
ProxyPassReverse / http://hostname1:8080/
</VirtualHost>
<VirtualHost *:80>
ServerName hostname2
ProxyPreserveHost On
ProxyPass / http://hostname2:9000/
ProxyPassReverse / http://hostname2:9000/
</VirtualHost>
现在,当从 hostname1 或 hostname2 请求时,我立即得到 500,显然是因为 mod_proxy 没有找到任何匹配的规则来代理请求:
[Fri Feb 08 06:41:01 2013] [warn] proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
请注意,Tomcat 没有接收传入的请求,因此没有日志输出
为了理智,我检查了我确实可以在它们各自的端口分别访问这两个资源,即我可以使用 hostname1:8080 和 访问 hostname1主机名2 使用主机名2:9000。
这里有什么东西可以帮助我正确配置吗?
此外,有没有更好的方法来以更理智的方式管理这个问题?
感谢您的帮助!
【问题讨论】:
-
您的“主机名”是否完全合格?另外,您在日志文件中看到了什么?你的 tomcat 日志中是否有任何内容?
-
完全限定为“name.com”(没有“www”),是的。
-
在上面添加了 Apache 错误日志
-
您是否尝试一次删除它们以确保它们彼此独立工作?
-
删除后一个 VirtualHost 没有效果。它之前工作的唯一方法是不使用 VirtualHost,只使用 mod_proxy 作为
ProxyPass / http://hostname1:8080/ ...... ProxyPassReverse / http://hostname1:8080/
标签: apache tomcat configuration webserver