Я запускаю веб-приложение 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"