在IIS 7.5上的同一端口上运行两个网站?

时间:2011-08-17 01:51:07

标签: asp.net iis request asp.net-routing

我们需要能够在同一个Intranet服务器和端口号上运行一个ASP.net Web应用程序的两个版本,但是一个映射到/,另一个映射到/ experimental(不是真实姓名,但足够接近) 。

C:\ inetpub \ wwwroot \ Version1 => http://test1.organization.com/ C:\ inetpub \ wwwroot \ Version2 => http://test1.organization.com/experimental

第一个网址已经向某些测试用户公开过,因此需要保持一定的稳定性。第二个将包含实验代码,只有用户进入/实验将会看到。我们无法选择使用其他服务器或其他端口。

我在过去通过/映射到IIS中的站点下的站点,然后将第二个站点添加为其下的应用程序,并将其别名化为/ site2来实现此目的。

服务器     网站         默认网站< =物理路径映射到第一个版本和/              / Application1< =嵌套应用程序映射到第二版和/ experimental

然而,这似乎很草率。使用重写规则或使用ARR执行此操作会更清晰吗?如果是这样,怎么样?

谢谢!

2 个答案:

答案 0 :(得分:13)

ARR和重写规则的组合将很好地解决这个问题。以下是要遵循的步骤:

  1. 下载并安装ARR http://www.iis.net/download/ApplicationRequestRouting
  2. 在IIS管理器中,在“连接”窗格中选择您的计算机,双击“IIS”部分中的“应用程序请求路由”功能,单击“操作”窗格中的“服务器代理”链接,然后选中“启用代理”复选框,选择“应用”操作。
  3. 更改两个现有网站的绑定,例如,将已发布的网站绑定到端口81,将实验网站绑定到端口82.
  4. 创建新网站和应用程序池,并将其绑定到http:*:80:。将其命名为“默认网站”。将其物理路径指向“%SystemDrive%\ inetpub \ DefaultWebSite”
  5. 为“默认”网站创建一个web.config文件,并在那里写下您的路由规则:

    <rules>
        <rule name="Reverse Proxy for Experimental" stopProcessing="true">
            <match url="^.*/experimental/.*" />
            <action type="Rewrite" url="http://{HTTP_HOST}:82/{R:0}" />
        </rule>
        <rule name="Reverse Proxy for Release" stopProcessing="true">
            <match url=".*" />
            <action type="Rewrite" url="http://{HTTP_HOST}:81/{R:0}" />
        </rule>
    </rules>
    
  6. 您可能需要稍微改编一下您的重写规则,您可以在IIS上使用URL重写模块小程序进行试验,并在此处阅读更多相关信息:http://learn.iis.net/page.aspx/500/testing-rewrite-rule-patterns/如需进一步帮助,请务必浏览Ruslan Yakushev's博客:http://ruslany.net/

  7. 这将为您提供三个完全独立的网站,可通过端口80上的单个外观进行访问(当然,如果您需要:http://localhost:81/default.aspx,您可以直接在端口81和82上点击每个网站)。

答案 1 :(得分:3)

你可以在不同的子域运行其中一个站点,比如test1.organization.com和beta1.organization.com吗?如果是这样,那么您可以将它们设置为IIS中的顶级网站,并在每个站点绑定上设置主机名,以便它们可以在相同的IP地址和端口上运行。