我在为Tomcat 8配置Apache 2反向代理时遇到问题。
我有一台运行两个Tomcat实例的服务器,旧的Tomcat 7和最近安装的Tomcat 8。 Tomcat 7在其server.xml中配置了一个HTTP连接器,它使用端口8080,配置如下所示:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="200"
clientAuth="false"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
scheme="http"/>
Tomcat 8在其server.xml中配置了一个HTTP连接器,它使用与上面相同配置的端口8765,只是一个不同的端口。
Tomcat 7有一个在webapps / api
中运行的REST APITomcat 8在webapps / anotherapi
中运行REST API服务器还有Apache 2作为反向代理,它侦听端口443. ssl.conf中的反向代理配置部分如下所示:
<VirtualHost _default_:443>
ServerName my.server.com:443
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyRequests Off
SSLProxyVerify none
SSLProxyCheckPeerCN off
ProxyPass /api http://localhost:8080/api
ProxyPassReverse /api http://localhost:8080/api
ProxyPass /anotherapi http://localhost:8765/anotherapi
ProxyPassReverse /anotherapi http://localhost:8765/anotherapi
#configuration truncated
</VirtualHost>
Tomcat 7及其反向代理配置已经在服务器上使用了很长时间并且它正常工作,但是新的Tomcat 8会出现问题。
当我尝试在浏览器上获取https://my.server.com/api/someresource时,我在Tomcat 7上获得了我的REST API的预期响应,但是当我尝试访问https://my.server.com/anotherapi/someresource时,我从Tomcat 7返回了HTTP状态404页面而不是Tomcat 8的预期响应。
为什么会这样?在处理两个Tomcat实例时,我还需要做些什么吗?
在Apache中加载了SSL模块,我的证书不会出现问题。
答案 0 :(得分:0)
自己想出来。我还有一个旧的ProxyPass配置(在这里被截断)在访问服务器的根目录(https://my.server.com/时)返回localhost:8080。