Я использую встроенный tomcat 7 за прокси-сервером iis 7.5, и запросы перенаправляются на tomcat с помощью arr.
Все работает нормально, если iis не требует ssl.
Тогда такие вещи, как ссылки, которые создаются динамически в .jsp
файлы на tomcat не работают правильно. Например если ссылка должна указывать на https://somewhere.com:443
это будет записано как http://somewhere.com:8080
(8080 - это порт, на котором работает tomcat).
Проблема, похоже, возникает, когда tomcat смотрит на себя, чтобы построить URL-адрес, который он правильно видит, что он работает http://somewhere.com:8080
, но мне нужно думать иначе.
Кто-нибудь знает, как сделать это без использования ssl между iis и tomcat?
Эта проблема связана с тем, что Tomcat не знает фактического внешнего URL
приложения. Когда приложение перенаправляет на относительный URL-адрес, сервлет добавляет полный абсолютный URL-адрес в Location (при необходимости).
Если вы используете HTTP
между IIS
и Tomcat, Tomcat считает, что вы используете HTTP
и генерирует http://...
абсолютный URL
.
Решение не использует HTTP
(ни HTTPS
) между IIS
и Tomcat.
Вы должны использовать AJP13
протокол и Tomcat-ISAPI Redirector
на IIS
.
Вот официальный Tomcat + IIS, как.
Используя Apache в качестве прокси, вы можете использовать HTTP для прокси, но вам нужно настроить Apache mod_proxy
и сообщить Tomcat, что он находится за прокси. Вот как это сделать.