我有一个 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 UI 中的实用程序添加一些规则,但这会显示规则重写 URL 后的端口,我想避免这种情况。
答案1
如果你可以为 Java 应用程序使用子域名,那么可能会更容易http://java.myserver/。然后您可以执行类似以下的操作,虽然我不熟悉 GlassFish,但我假设您可以将其配置为监听某个 IP 地址,就像 TomCat 一样。如果您想对两个应用程序使用端口 80,则需要 IIS 监听 IP 地址 A,GlassFish 监听 IP 地址 B。然后使用 DNS 将 myserver 指向 IP A,将 java.myserver 指向 IP B。
基本上限制 IIS 仅监听 IP A 而不绑定 IP B。这样 GlassFish 就可以将其绑定到端口 80。
以管理员身份打开命令提示符
使用此命令显示 IIS 正在监听/绑定哪个 IP 地址。
netsh http show iplisten
然后使用此命令限制 IIS 监听/绑定特定的 IP 地址
netsh http add iplisten xxx.xxx.x.x
重新启动服务器(您可以尝试重新启动 http 服务,但这并不总是显示在服务中,而且很麻烦。重新启动更容易)。
答案2
2018 年更新:早些时候微软也创建了 HttpPlatformHandler。
https://www.iis.net/downloads/microsoft/httpplatformhandler
因此,您应该首先尝试 HttpPlatformHandler。它是 Azure Java 支持背后的魔力。
你有几个选择,但我建议
http://tomcatiis.riaforge.org/
微软的 ARR 是另一种方法,但权重更高,