Websphere 未将请求定向到 response.sendRedirect 上的代理服务器

Websphere not directing request to proxy server on response.sendRedirect

我已经在我的 websphere 8 应用程序服务器前面配置了安全的 apache 反向代理。我已经设置了通用 JVM 参数 -Dhttps.proxyHost 和 -Dhttps.proxyPort 但 response.sendRedirect 上的请求未定向到 peoxy 服务器。它指向默认端口 9080。 如何解决这个问题? 我通过如下修改我的连接器端口解决了 Tomcat & Jboss 上的这个问题

连接器名称="http"协议="HTTP/1.1"套接字绑定="http"方案="https"代理名称=“192.168.1.1”代理端口= 443" 安全="true"

如何为 Websphere 解决这个问题?

我假设你正在使用如下

response.sendRedirect(request.getContextPath() + "/my/main.jsp");

此处 - request.getContextPath 提供代理服务器信息。

作为快速修复,我使用属性文件中的代理服务器值解决了它。

response.sendRedirect("get proxy server name from prop file" + "/my/main.jsp");

按照以下步骤解决了这个问题。

  1. 在 Apache 网络服务器的虚拟主机标记中添加以下内容。您实际需要的是转发用于访问服务器的协议。

    虚拟主机 *:443> RequestHeader 设置 X-Forwarded-Proto "https" …… /虚拟主机>

有关更多说明,请参阅网站 https://www.nczonline.net/blog/2012/08/08/setting-up-apache-as-a-ssl-front-end-for-play/

  1. 需要通过管理控制台在 Websphere webcontainer 属性中添加以下属性。 转到应用程序服务器 > server1 > Web 容器 > 自定义属性 添加以下属性

httpsIndicatorHeader - X-Forwarded-Proto(在网络服务器中请求 header 值设置(在我们的例子中是 https))

com.ibm.ws.webcontainer.extractHostHeaderPort - true(服从请求端口号)

信任主机header端口 - true(服从请求端口号)

此设置参考了以下站点

http://www-01.ibm.com/support/docview.wss?uid=swg21569667

http://129.33.205.81/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.iseries.doc/ae/rweb_custom_props.html

在我们的例子 (Websphere Liberty 21.0.0.9) 中,我们只是在相应的 Apache 虚拟主机配置中添加了几个指令:

  • RequestHeader 设置 X-Forwarded-Proto“https”
  • ProxyPreserveHost 开启`

这些指令仅在

上的 Apache 2.3.3 有效

两者都在 article mentioned below by @Darshan Shah

中提到