2012-03-06 58 views
1

我在Win 2008 R2服务器上设置不同的Web应用程序。我试图完成以下任务:IIS 7 URL重写或反向代理处理防火墙安全

  1. http://myserver/应指向一个本地文件夹与静态HTML页面

  2. http://myserver/crm应该“重写”的地方,我已经安装了一个基于Web的CRM应用http://myserver:1234/

我们有一个变化过程打开防火墙端口等等,而不是让他们打开1234端口,我宁愿人们只是通过http://myserver/crm去IIS应该隐藏幕后的港口业务。

  1. 在这种情况下,我需要一个反向代理吗?或者一个简单的入站规则?
  2. 我应该在哪个网站配置此规则?
  3. 我是否需要在默认网站下创建一个“CRM”虚拟目录?
  4. 此外,任何规则示例都会有所帮助。
  5. 我希望这将实现不需要打开防火墙端口的目标...?

感谢 (很抱歉,如果这是类似于另一个问题,但我不知道如果我需要一个反向代理或一个简单的入站规则。)

回答

1
  1. 你需要入站和出站规则。实现此目标的方法称为反向代理。
  2. Website级别处理http://myserver/域或Global级别。
  3. 编号
  4. 使用以下规则作为起点。
  5. 我会说可以使用反向代理来实现您的目标。

IIS重写规则:

<rules> 
    <rule name="CrmInbound"> 
     <match url="^crm(.*)" /> 
     <action type="Rewrite" url="http://myserver:1234/{R:1}" /> 
    </rule> 
</rules> 
<outboundRules> 
    <rule name="CrmOutbound" preCondition="OnlyHtml"> 
     <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="http://myserver:1234(.*)" /> 
     <action type="Rewrite" value="http://myserver/crm(.*)" /> 
    </rule> 
    <preConditions> 
     <preCondition name="OnlyHtml"> 
      <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> 
     </preCondition> 
    </preConditions> 
</outboundRules> 
+0

感谢。我认为我们很接近。尽管在http:// myserver /和http:// myserver/crm /上获得内部服务器错误。将挖掘追踪,看看发生了什么。 – 2012-03-06 11:16:37

+0

好吧,所以我禁用了出站服务器,至少内部服务器错误消失了。我可以正确地看到主要的myserver站点,它可以导航到myserver/crm,但在本地和网络上显示空白页。可能需要以某种方式调整出站。 – 2012-03-06 11:56:25

+0

小小的更新:我尝试应用一个简单的规则,将myserver重写为myserver:1234,并且它工作正常。但我试图将myserver/crm重写为myserver:1234,当我将出站规则放入时,导致出现HTTP500。 – 2012-03-08 07:42:43