我有一个像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的反向代理是否可以实现?如果是,怎么样?
谢谢
答案 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>