【发布时间】:2017-09-25 07:06:57
【问题描述】:
我在为 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 实例时我还需要做些什么吗?
SSL 模块已加载到 Apache 中,我的证书应该没有问题。
【问题讨论】:
标签: tomcat configuration apache2 reverse-proxy