У меня есть сервер приложений Java (на самом деле GlassFish, но проблема такая же, как и для любого другого сервера приложений, я полагаю), работающий на порту 8080. И у меня IIS 7.5 прослушивает порт 80 в конфигурации по умолчанию.
Я хочу, чтобы люди не набирали порт, потому что это непрофессионально. Поэтому я хочу, чтобы когда кто-то печатал
http://myserver
трафик направляется в IIS. И вот как это уже работает. Но я также хочу, чтобы когда кто-нибудь печатал
http://myserver/java
трафик направляется на порт 8080, и, следовательно, отображается мой экран-заставка GlassFish. Если я развернул приложение на GlassFish в корневом контексте app1
, печатая
http://myserver/java/app1
должен получить доступ к приложению.
Как я могу это сделать? Я попытался добавить некоторые правила с помощью URL Rewrite
утилита из пользовательского интерфейса IIS7.5, но она показывает порт после того, как правило переписало URL-адрес, и я хочу избежать этого.
Обновление в 2018 году: ранее Microsoft также создала HttpPlatformHandler.
https://www.iis.net/downloads/microsoft/httpplatformhandler
Поэтому сначала вам следует попробовать HttpPlatformHandler. Это волшебство поддержки Java в Azure.
У вас есть несколько вариантов, но я рекомендую
http://tomcatiis.riaforge.org/
ARR Microsoft - другой подход, но он более тяжелый,
Было бы проще, если бы вы могли использовать субдомен для Java-приложения, например http: //java.myserver/. Затем вы можете сделать что-то вроде следующего, хотя я не знаком со GlassFish, но я предполагаю, что вы можете настроить его для прослушивания определенного IP-адреса, например, с TomCat. Если вы хотите использовать порт 80 для обоих приложений, вам понадобится IIS для прослушивания IP-адреса A и GlassFish для прослушивания IP-адреса B. Затем используйте DNS, чтобы указать myserver на IP A, а java.myserver - на IP B.
Затем выполните следующие действия: http://www.fredmastro.com/post/Restrict-IIS-to-listen-only-on-X-IP-Address-Allowing-you-to-co-run-with-TomCatApache-on-port-80- с-IIS-на-порту-80.aspx
В основном ограничивают IIS прослушиванием только IP A, а не привязкой IP B. Так что GlassFish может привязать его к порту 80.
Откройте командную строку от имени администратора
Покажите, какой IP-адрес IIS прослушивает / выполняет привязку с помощью этой команды.
netsh http show iplisten
Затем ограничьте IIS прослушиванием / привязкой определенного IP-адреса с помощью этой команды
netsh http add iplisten xxx.xxx.x.x
Перезагрузите сервер (вы можете попробовать перезапустить службу http, но это не всегда отображается в службах, и это больно. Перезагрузить проще).