如何在Windows 2008上为运行在不同平台上的应用程序共享端口80



我有一台Apache Tomcat,它运行在Windows Server 2008 R2 Standard上,并托管一个网站(www.domain1.com)。Apache目前正在侦听服务器上的端口80。现在,在同一台服务器上,我想托管一个用.NET(www.domain2.com)编写的Http服务器应用程序,该应用程序将作为Windows服务运行。我还希望Http服务器作为www.domain2.com通过端口80访问。

所以我只需要。

    Request                                   Forward To
1.  http://www.domain1.com/[anything]         http://localhost:8080/app1/[anything] <-- tomcat
2.  http://www.domain2.com/[anything]         http://localhost:8000/[anything] <-- windows service

我尝试使用以下netsh配置,但没有帮助。

netsh interface portproxy add v4tov4 listenport=80 listenaddress=www.domain1.com connectport=8080 connectaddress=127.0.0.1 protocol=tcp
netsh interface portproxy add v4tov4 listenport=80 listenaddress=www.domain2.com connectport=8000 connectaddress=127.0.0.1 protocol=tcp

当我从本地机器检查telnet localhost 80或从远程机器检查telnet www.domain1.com 80时,它没有连接。

我对任何涉及netsh、IIS、Tomcat或任何其他第三方工具的端口转发解决方案都持开放态度,以实现我的目标。

解决方案

根据卡洛斯的建议,以下配置工作

  1. 在IIS上安装UrlRewrite
  2. 在IIS上安装ARR
  3. IIS主页->IIS->应用程序请求路由缓存->服务器代理设置->检查启用代理
  4. 创建不绑定主机名的默认网站侦听端口80
  5. 将以下内容添加到默认网站的web.config

-

<system.webServer>
<rewrite>
<rules>
    <rule name="forward domain1 to tomcat">  
        <match url="(.*)" />  
        <conditions>
            <add input="{HTTP_HOST}" pattern="domain1.com" />
        </conditions>
        <action type="Rewrite" url="http://localhost:8080/app1/{R:1}" />  
    </rule>
    <rule name="forward domain2 to windows service">  
        <match url="(.*)" />  
        <conditions>
            <add input="{HTTP_HOST}" pattern="domain2.com" />
        </conditions>
        <action type="Rewrite" url="http://localhost:8000/{R:1}" />  
    </rule> 
</rules>
</rewrite>
</system.webServer>

几个建议:

  1. 将端口80中的IIS配置为使用端口80的主机名。默认的网站安装为端口80设置了一个绑定,没有任何主机名,这意味着它将设置并注册http.sys以侦听所有端口。如果你只是在那里设置了一个主机名,那么它会让你在其他程序中使用,比如.net
  2. 在你的.net应用程序中(假设你使用的是在http.sys之上构建的HttpListener),那么你可以确保使用一个带有主机名的绑定(前缀)(如果需要的话,它甚至可以是localhost),这将使它能够工作,并对通过http.sys在端口80监听的其他人很好
  3. 最后,对于像其他http服务器等非http.sys-nice-players,您可以安装应用程序请求路由(http://www.iis.net/downloads/microsoft/application-request-routing)这将允许您配置规则以将流量代理到其他端口或(如果需要,甚至是其他机器)。所以您可以在ARR中添加规则来进行映射和路由

相关内容

  • 没有找到相关文章

最新更新