Apache 2 HTTPS反向代理有两个Tomcat实例?

时间:2017-04-27 12:59:01

标签: tomcat configuration apache2 reverse-proxy

我在为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 API

Tomcat 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模块,我的证书不会出现问题。

1 个答案:

答案 0 :(得分:0)

自己想出来。我还有一个旧的ProxyPass配置(在这里被截断)在访问服务器的根目录(https://my.server.com/时)返回localhost:8080。