如何使用 Apache 反向代理和 WebSphere Application Server 从 http 切换到 https 并切换回来

如何使用 Apache 反向代理和 WebSphere Application Server 从 http 切换到 https 并切换回来

我在 WebSphere Application Server (WAS) 中运行 Spring Web App。WAS 使用 https 监听端口 36500,Apache 使用 http 监听端口 80。使用的协议目前不受我控制,因此我无法让 Apache 使用 https(这将解决我将在下面描述的问题)。

我已将 Apache 设置为反向代理,以将所有请求转发到指定端口上的 WAS,如下所示:

Listen 80
LogLevel warn
LoadModule ssl_module modules/mod_ssl.so
SSLProxyEngine on
<VirtualHost _default_:80>
  ProxyPreserveHost on
  ServerName ech-10-157-131-139
  LogFormat "%h %l %u %t \"%r\" %>s %b" common
  CustomLog logs/access_log common
  ErrorLog logs/error_log
  <Location /sel>
    Header set Host ech-10-157-131-139.mycompany.int
    Header set Access-Control-Allow-Origin "*"
    ProxyPass https://ech-10-157-131-139.mycompany.int:36500/sel
    ProxyPassReverse https://ech-10-157-131-139.mycompany.int:36500/sel
  </Location>
</VirtualHost>

这工作正常,WAS 通过 Apache 代理返回的 JSON 将 Apache 服务器的 URL 映射到links输出底部的部分。但是,这些links元素上的协议是 https,大概是因为 WAS 通过 https 提供服务。我可以在 WAS 或 Apache 中做些什么来将它们更改为 http?下面有一些示例输出。

这个请求:

http://ech-10-157-131-139.mycompany.int/sel/services?endingHoursAgo=0&hoursToShow=2

得到以下响应(为了简洁起见,我减少了数据量):

{
    "content": [
        {
            "cpuUsageId": 132291,
            "cpuUsageTimestamp": 1414583402385,
            "deviceName": "dev",
            "domainName": "DEVESB",
            "tenSecondPercentage": 3,
            "oneMinutePercentage": 3,
            "tenMinutePercentage": 4,
            "oneHourPercentage": 4,
            "oneDayPercentage": 4,
            "responseTimestamp": "2014-10-29 06:50:15",
            "links": []
        },
    ],
    "links": [
        {
            "rel": "self",
            "href": "https://ech-10-157-131-139.mycompany.int/sel/cpu?from=2014-10-29T06:50:00.000-05:00&to=2014-10-29T08:50:00.000-05:00"
        }
    ]
}

您可以看到self上面的链接有一个href以“https”开头的值。我希望 WAS 将其返回为“http”。

答案1

您可以尝试使用类似这样的方法:

AddOutputFilterByType 替代文本/json

替换“s|htt ps://|htt p://|i”

相关内容