反向代理http到tomcat

反向代理http到tomcat

我已经配置了一个带有 SSL 和反向代理的 Apache 服务器到 tomcat

<VirtualHost domain.com:1443>
[...]
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://local.com:8080/
ProxyPassReverse / http://local.com:8080

SSLEngine on
[...]
</VirtualHost>

Tomcat 正在监听 8080。问题是 tomcat 上的应用程序正在重定向请求(HTTP 302 临时移动)。例如,如果我使用 URL https://domain.com:1443/folder,反向代理启动请求 http://local.com:8080/folder,然后应用程序重定向到“/subfolder”,因此最终请求是:http://domain.com:1443/文件夹/子文件夹。结果是 400 错误请求错误代码,因为该请求是我的 SSL 端口上的 HTTP。

你知道我该如何解决这个问题吗?

提前致谢。

答案1

不要使用普通的 http 代理,而是使用proxy_ajp。调整下面的示例以满足您的需求,即由您决定将所有内容代理到容器或仅代理命名空间:

ProxyRequests off
ProxyPassMatch ^/(your_app)(.*) ajp://localhost:8009/$1$2 ttl=120 ping=1

确保server.xml您的配置中tomcat包含 AJP 监听器。执行器是可选的。

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
          maxThreads="150" minSpareThreads="4"/>

<Connector executor="tomcatThreadPool"
           port="8009" protocol="AJP/1.3"
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           redirectPort="8443" />

相关内容