基于主机名的Azure Web Apps反向代理

时间:2016-01-28 02:56:43

标签: azure iis proxy azure-web-sites

我有一个基于Hapi.js运行Node应用程序的Azure Web App(以前称为Azure Websites)。 Hapi在三个不同的端口上运行三种不同的应用程序。在本地,我正在运行nginx并且有3个不同的域,每个域使用proxy_pass指向不同的端口:

api.business.mywebsite.com --> localhost:3001
api.customer.mywebsite.com --> localhost:3002
api.admin.mywebsite.com --> localhost:3003

理想情况下,我希望在我的Azure Web App上进行类似的设置,其中Hapi服务器在端口3001-3003上运行,并基于传入的主机名(例如:api.business.mywebsite.com),其指向{ {1}},将代理运行该特定应用程序的端口。我已阅读this article以及其他一些内容,但我仍然不太确定a)是否可行以及b)如何配置它。

提前致谢!

1 个答案:

答案 0 :(得分:0)

以下是有关如何创建反向代理的说明:http://ruslany.net/2014/05/using-azure-web-site-as-a-reverse-proxy/

这些是关键步骤:

1。在您的网站上启用反向代理

使用以下内容在您的sites文件夹中创建applicationHost.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>

2。将重写规则添加到web.config文件中:

示例规则:

<configuration>  
  <system.webServer>  
    <rewrite>  
      <rules>  
        <rule name="Proxy" stopProcessing="true">  
          <match url="^proxyUrl/?(.*)" />  
          <action type="Rewrite" url="http://www.iis.net/{R:1}" />  
        </rule>  
      </rules>  
    </rewrite>  
  </system.webServer>  
</configuration> 

要使反向代理基于主机名,只需设置相应的匹配网址

即可