【Azure 应用服务】在App Service for Windows中实现反向代理 - LuBu0505/My-Code GitHub Wiki

问题描述

如何在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://.scm.chinacloudsites.cn/DebugConsole)的Home \ Site 目录中:  image

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

web.config内容:

<?xml version="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 Stackapplicationhost.xdt,

⚠️ **GitHub.com Fallback** ⚠️