Мне нужно запустить Tomcat7 и IIS 7.5 на том же компьютере, где установлена ОС Windows Server 2008 R2 Enterprise.
У меня только 1 сетевая карта и 5 IP-адресов, связанных с машиной. Допустим:
- 192.0.2.1, 192.0.2.2 for IIS
- 192.0.2.3, etc for Tomcat
Порт 80 используется IIS.
Вызовы на сайт IIS не вызывают проблем, так как сопоставление www.site1.com => 192.0.2.1:80
позволяет пользователю просто ввести имя в URL-адрес и не увидеть порт по умолчанию 80.
Но tomcat не может использовать порт 80.
Я могу использовать IIS для синтаксического анализа входящих HTTP-запросов на основе имени домена и отправки надлежащего трафика Tomcat, прослушивающему другой порт.
Например, www.tomcatapp.com
перенаправляется с IIS на 192.0.2.3:8080
где Tomcat тоже слушает.
Или без использования IIS «заставляет пользователей» вызывать сайт Tomcat как www.tomcatapp.com:8080
Может быть еще один способ поумнее?
Почему IIS «блокирует» порт 80 для всех 5 IP-адресов?
Получу ли я преимущество или штраф за использование Tomcat за IIS?
Обратной стороной перенаправления на порт 8080 является то, что вы перенаправляете его на порт 8080. Ваши пользователи будут видеть его в своей адресной строке, что выглядит довольно непрофессионально; Кроме того, некоторые корпоративные брандмауэры и веб-фильтры блокируют доступ к порту 8080, так что это тоже может быть проблемой в зависимости от вашей клиентуры.
Если вы можете выделить один из своих IP-адресов (или уже так) веб-приложению Tomcat, то вы действительно можете заставить IIS прекратить привязку этого порта:
netsh http add iplisten 192.0.2.1
netsh http add iplisten 192.0.2.2
netsh http show iplisten
Где 192.0.2.1 и 192.0.2.2 - это адреса, которые IIS должен привязать к порту 80. Как только это будет сделано, перезапустите службу IIS. Видеть Вот для справки.
Это освободит порт 80 на IP-адресе, к которому вы хотите привязать Tomcat, что позволит вам прослушивать его напрямую.