问题描述
如何在App Service for Windows(.NET Stack)中,如何实现反向代理呢?
正向代理:客户端想要访问一个服务器,但是它可能无法直接访问这台服务器,这时候这可找一台可以访问目标服务器的另外一台服务器,而这台服务器就被当做是代理人的角色 ,称之为代理服务器,于是客户端把请求发给代理服务器,由代理服务器获得目标服务器的数据并返回给客户端。客户端是清楚目标服务器的地址的,而目标服务器是不清楚来自客户端,它只知道来自哪个代理服务器,所以正向代理可以屏蔽或隐藏客户端的信息。
反向代理:从上面的正向代理,你会大概知道代理服务器是为客户端作代理人,它是站在客户端这边的。其实反向代理就是代理服务器为服务器作代理人,站在服务器这边,它就是对外屏蔽了服务器的信息,常用的场景就是多台服务器分布式部署,像一些大的网站,由于访问人数很多,就需要多台服务器来解决人数多的问题,这时这些服务器就由一个反向代理服务器来代理,客户端发来请求,先由反向代理服务器,然后按一定的规则分发到明确的服务器,而客户端不知道是哪台服务器。常常用nginx来作反向代理。
————————————————
版权声明:本文为CSDN博主「凉茶饭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
实现步骤
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内容:
<?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