使用Azure平台使用ARR进行反向代理

时间:2015-07-16 09:42:48

标签: azure iis reverse-proxy azure-web-sites arr

我有一个像example.com这样的域名,我还在Azure中托管了一个名为mysite1.azurewebsites.net的网站。

现在,来自live.example.com的所有流量都转到了mysite1.azurewebsites.net。我们将自定义域名指向我们的Windows Azure网站。我想使用反向代理技术将一些请求(例如来自客户端A的请求)重定向到mysite2.azurewebsites.net,而其他客户端的其他请求仍然转到mysite1.azurewebsites.net。所有这些都应该在他们登录后发生。 (live.example.com是登录页面)

Client A         live.example.com  ======> mysite2.azurewebsites.net
Client B         live.example.com  ======> mysite3.azurewebsites.net
Client C         live.example.com  ======> mysite4.azurewebsites.net
Other Clients    live.example.com  ======> mysite1.azurewebsites.net

使用ARR的反向代理是否可以实现?如果是,怎么样?

谢谢

1 个答案:

答案 0 :(得分:2)

此博客文章介绍了如何执行此操作http://ruslany.net/2014/05/using-azure-web-site-as-a-reverse-proxy/

总结一下,在live.example.com上你需要设置一个看起来像这样的xdt转换

<?xml version="1.0"?>  
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">  
  <system.webServer>  
    <proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="false"  reverseRewriteHostInResponseHeaders="false" />  
  </system.webServer>  
</configuration>

然后,您需要设置一个URL重写规则来执行您想要的映射。如果您计划使用UserAgent作为告诉您客户名称的内容,那么它将是这样的

<configuration>  
  <system.webServer>  
    <rewrite>  
      <rules>  
        <rule name="ClientA">
          <match url="^(.*)$" />
            <conditions>
              <add input="{HTTP_USER_AGENT}" pattern="Client A" />
            </conditions>
          <action type="Rewrite" url="https://mysite2.azurewebsites.net/{R:1}" />
        </rule>
        <rule name="ClientB">
          <match url="^(.*)$" />
            <conditions>
              <add input="{HTTP_USER_AGENT}" pattern="Client B" />
            </conditions>
          <action type="Rewrite" url="https://mysite3.azurewebsites.net/{R:1}" />
        </rule>
        <rule name="ClientC">
          <match url="^(.*)$" />
            <conditions>
              <add input="{HTTP_USER_AGENT}" pattern="Client C" />
            </conditions>
          <action type="Rewrite" url="https://mysite4.azurewebsites.net/{R:1}" />
        </rule>
        <rule name="Others" stopProcessing="true">
          <match url="^(.*)$" />
          <action type="Rewrite" url="https://mysite1.azurewebsites.net/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>