有没有办法使用HTTP代理将Apache连接到Tomcat,以便Tomcat获取正确的传入主机名而不是localhost?我在apache中使用此指令:
ProxyPass /path http://localhost:8080/path
Run Code Online (Sandbox Code Playgroud)
但它来自localhost,当我们在同一台服务器上有一堆站点时,这是无用的.我可以在服务器配置中手动设置主机:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
proxyName="pretend.host" proxyPort="80" />
Run Code Online (Sandbox Code Playgroud)
但这再次不会提供多个站点.而且我不喜欢为每个站点使用不同的内部端口,听起来真的很难看.
我代理它时是否无法转移端口?
(如果你问为什么我不只是使用AJP,答案就是这个错误.我在尝试完全放弃Tomcat和Apache之前我正在尽我所能)
为了响应错误传递页面的错误,我们正在考虑从Apache + Tomcat切换到Glassfish.这不是受到功能的启发,而是受到一种不会消失的故障的挫败感.
问题是:
我们应该使用Glassfish与Apache合作,还是完全取代Apache?Apache和Tomcat之间的接口显然与我们看到的错误有关,我们最不需要的是再次出现同样的问题.另一方面,我们需要PHP,Apache已经设置好处理.
我们应该使用Glassfish 2还是3?版本3似乎是一个完全重写,这里和其他地方的评论表明很多人都坚持2.
Apache和Glassfish在同一台服务器上的合作能力如何?例如,Apache可以简单地将ProxyPass
所有域的所有请求转移到Glassfish(而不是现在正在执行的更具体的Tomcat代理).
有没有更简单的方法?我讨厌无所事事地完成所有这些工作.
这个问题是否属于serverfault.com?
由于可怕的,可怕的错误,我们改变了将Apache连接到Tomcat的方式.我们用的是mod_jk
:
JkMount /path ajp13
Run Code Online (Sandbox Code Playgroud)
现在我们正在使用mod_proxy_ajp
:
ProxyPass /path ajp://localhost:8009/path
ProxyPassReverse /path ajp://localhost:8009/path
Run Code Online (Sandbox Code Playgroud)
但是,有一个功能JkMount
提供但ProxyPass
不提供:选择文件类型的能力.这使得代理html文件成为可能,但不能代理图像 - 换句话说,让好的快速Apache服务于静态的东西,并仅仅为动态的东西使用缓慢的Tomcat.
JkMount /*.html ajp13
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这一目标ProxyPass
?可能使用周围的<Location>
指令或类似的东西?