问题描述

如何在App Service for Windows(.NET Stack)中,如何实现反向代理呢?

正向代理:客户端想要访问一个服务器,但是它可能无法直接访问这台服务器,这时候这可找一台可以访问目标服务器的另外一台服务器,而这台服务器就被当做是代理人的角色 ,称之为代理服务器,于是客户端把请求发给代理服务器,由代理服务器获得目标服务器的数据并返回给客户端。客户端是清楚目标服务器的地址的,而目标服务器是不清楚来自客户端,它只知道来自哪个代理服务器,所以正向代理可以屏蔽或隐藏客户端的信息。

反向代理:从上面的正向代理,你会大概知道代理服务器是为客户端作代理人,它是站在客户端这边的。其实反向代理就是代理服务器为服务器作代理人,站在服务器这边,它就是对外屏蔽了服务器的信息,常用的场景就是多台服务器分布式部署,像一些大的网站,由于访问人数很多,就需要多台服务器来解决人数多的问题,这时这些服务器就由一个反向代理服务器来代理,客户端发来请求,先由反向代理服务器,然后按一定的规则分发到明确的服务器,而客户端不知道是哪台服务器。常常用nginx来作反向代理。

————————————————
版权声明:本文为CSDN博主「凉茶饭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:​​https://blog.csdn.net/aqleung/article/details/80923470​

 


实现步骤

1)在本地新建 applicationhost.xdt 文件,使用以下内容。然后通过Kudu站点上传到 home\site 目录中

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>

放置在App Service的高级工具(Kudu 站点:https://<your app service name>.scm.chinacloudsites.cn/DebugConsole)的Home \ Site 目录中:

【Azure 应用服务】在App Service for Windows中实现反向代理_客户端

2)在 wwwroot 目录中添加 web.config 文件,并且配置好 rewrite rule

web.config内容:

<?xml versinotallow="1.0" encoding="UTF-8"?> 
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="siteproxy" stopProcessing="true">
<match url="transfer/(.*)" />
<action type="Rewrite" url="https://target-site-host-url/{R:1}" />
</rule>
<rule name="Handle custom error 404/500" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering>
<requestLimits maxUrl="10000" maxQueryString="5000" />
</requestFiltering>
</security>
<staticContent>
<mimeMap fileExtension=".webp" mimeType="image/webp" />
</staticContent>
</system.webServer>
</configuration>

3) 以上文件配置好后,重启 App Service 站点。反向代理配置成功! 

 

参考资料

URL Rewrite rule:  ​​https://learn.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-the-url-rewrite-module​

 


当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

分类: ​​【Azure 事件中心】​​, ​​【Azure 环境】​​, ​​【Azure Developer】​

标签: ​​Web.config​​, ​​反向代理 .NET Stack​​, ​​applicationhost.xdt​​,