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

问题描述

如何在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 目录中:

 

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

web.config内容:

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

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

 

参考资料

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

 

正在加载评论...