Назад | Перейти на главную страницу

Как переключиться с http на https и обратно с помощью обратного прокси-сервера Apache и WebSphere Application Server

Я запускаю веб-приложение Spring на сервере приложений WebSphere (WAS). WAS прослушивает порт 36500 с использованием https, Apache прослушивает порт 80 с помощью http. Сейчас я не могу контролировать используемые протоколы, поэтому я не могу заставить 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>

Это работает нормально, и JSON, возвращаемый WAS через прокси-сервер Apache, отображает URL-адрес сервера Apache в links раздел внизу вывода. Однако протокол по этим links elements - 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.

Вы можете попробовать использовать что-то вроде этого:

AddOutputFilterByType ЗАМЕНА текст / json

Заменить "s | htt ps: // | htt p: // | i"