Windows Server 2008 上 IIS 7.5 背后的 Java 应用程序服务器

Windows Server 2008 上 IIS 7.5 背后的 Java 应用程序服务器

我有一个 Java 应用程序服务器(确实是 GlassFish,但我猜其他任何应用程序服务器的问题都是一样的),在端口 8080 上运行。并且我让 IIS 7.5 默认配置在端口 80 上监听。

我想避免有人输入端口,因为这很不专业。所以我想当有人输入

http://myserver

流量被导向 IIS。这就是它现在的工作方式。但我还希望当有人输入

http://myserver/java

流量被定向到端口 8080,因此显示我的 GlassFish 启动画面。如果我已在上下文根下的 GlassFish 上部署应用程序app1,则输入

http://myserver/java/app1 

应该访问该应用程序。

我该怎么做?我尝试使用URL RewriteIIS7.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。

然后按照以下步骤操作:http://www.fredmastro.com/post/Restrict-IIS-to-listen-only-on-X-IP-Address-Allowing-you-to-co-run-with-TomCatApache-on-port-80-with-IIS-on-port-80.aspx

基本上限制 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 是另一种方法,但权重更高,

http://blogs.iis.net/mailant/archive/2009/10/22/how-you-can-use-iis7-as-web-front-to-java-app-servers-in-a-3-tier-architecture.aspx

相关内容