locked
using WHS 2011 with ARR for a Reverse Proxy. How can I keep the WHS remote web site working? RRS feed

  • Question

  • I installed two IP Cameras in my house and needed to be able to access them from work but my job restricts all outbound ports except 80 and 443.  Based on the article http://blogs.iis.net/carlosag/archive/2010/04/01/setting-up-a-reverse-proxy-using-iis-url-rewrite-and-arr.aspx I decided to setup IIS with Application Request Routing (ARR) and URL Rewrite.  It works and I can see my camera's just fine but adding the rewrite rules to the Web.config used by WHS causes problems with the WHS remote site.  I would appreciate any help you folks can give.  Basically I created two applications (CameraUpStairs and CameraDownStairs) under the Default Web Site.  Then I modified the Web.config at C:\Program Files\Windows Server\Bin\WebApps\Site by adding the rules you see below

      <system.webServer> 
        <rewrite> 
          <rules> 
            <rule name="Route the requests for CameraUpStairs" stopProcessing="true"> 
              <match url="^CameraUpStairs/(.*)" /> 
              <action type="Rewrite" url="http://192.168.0.8:6474/{R:1}" /> 
              <serverVariables> 
                <set name="HTTP_ACCEPT_ENCODING" value="" /> 
              </serverVariables> 
            </rule>
            <rule name="Route the requests for CameraDownStairs" stopProcessing="true"> 
              <match url="^CameraDownStairs/(.*)" /> 
              <action type="Rewrite" url="http://192.168.0.9:6475/{R:1}" /> 
              <serverVariables> 
                <set name="HTTP_ACCEPT_ENCODING" value="" /> 
              </serverVariables> 
            </rule> 
          </rules>
          <outboundRules> 
            <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1"> 
              <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://192.168.0.8:6474/(.*)" /> 
              <action type="Rewrite" value="/CameraUpStairs/{R:2}" /> 
            </rule> 
            <rule name="ReverseProxyOutboundRule2" preCondition="ResponseIsHtml1"> 
              <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://192.168.0.9:6475/(.*)" /> 
              <action type="Rewrite" value="/CameraDownStairs/{R:2}" /> 
            </rule> 
            <rule name="RewriteRelativePaths2" preCondition="ResponseIsHtml1"> 
              <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/(.*)" negate="false" /> 
              <action type="Rewrite" value="/CameraDownStairs/{R:1}" /> 
            </rule> 
            <rule name="RewriteRelativePaths" preCondition="ResponseIsHtml1"> 
              <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/(.*)" negate="false" /> 
              <action type="Rewrite" value="/CameraUpStairs/{R:1}" /> 
            </rule> 
            <preConditions> 
              <preCondition name="ResponseIsHtml1"> 
                <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> 
              </preCondition> 
            </preConditions> 
          </outboundRules>
        </rewrite> 
      </system.webServer>
    
    Thanks
    Sunday, March 27, 2011 9:54 PM