我有一个基于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)如何配置它。
提前致谢!
答案 0 :(得分:0)
以下是有关如何创建反向代理的说明:http://ruslany.net/2014/05/using-azure-web-site-as-a-reverse-proxy/
这些是关键步骤:
使用以下内容在您的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>
示例规则:
<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>
要使反向代理基于主机名,只需设置相应的匹配网址
即可