Azure Web App服务:IIS反向代理是否可能?

2w3rbyxf  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(95)

是否可以在IIS for Azure App Service上运行反向代理?
我想反向代理socket.io端口3000到端口443的https。

n3h0vuf2

n3h0vuf21#

amrnrhlw

amrnrhlw2#

TL;DR;

  • Azure网站中托管的任何网站都已安装URL重写和ARR,但已禁用
  • 需要应用web.config和applicationHost.xdt中的一些特定设置才能使其工作

2023年6月29日更新

根据Zaid Safadi的说法,可以使用常规的Azure Web App(不需要ASE,如下所述)来使用URL重写模块和ARR配置反向代理。
来自Ruslan的标题为Using Azure Web Site as a reverse proxy的推荐文章说“Azure网站中托管的任何网站都安装了URL重写和ARR。但是,在ARR中默认情况下禁用代理功能。为了实现这一点,我们将使用Azure Site Extension XDT转换,这将修改我们网站的applicationHost.config文件,并启用代理功能。
要启用代理的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>

详细步骤

详细的步骤可以在article written by Edi Wang中找到,他在Microsft Azure中陈述了以下步骤:

  • 在wwwroot文件夹下创建web.config文件

web.config示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="996" stopProcessing="false">
          <match url="996(.*)" />
          <action type="Rewrite" url="https://996.icu/{R:1}" appendQueryString="true" logRewrittenUrl="false" />
        </rule>
        <rule name="996js" stopProcessing="false">
          <match url="js/(.*)" />
          <action type="Rewrite" url="https://996.icu/js/{R:1}" appendQueryString="true" logRewrittenUrl="false" />
        </rule>
      </rules>
    </rewrite>
    <httpProtocol>
     <customHeaders>
        <add name="strict-transport-security" value="max-age=15552001; includeSubDomains; preload" />
     </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>
  • 它仍然无法在Azure Server上工作,它将显示404 HTTP错误,因为Azure App Service默认情况下不会启用ARR模块,尽管它是预安装的
  • 若要在Azure App Service上启用ARR,您需要创建一个xdt文件并将其上载到您的网站目录。
  • 转到网站管理刀片上的高级工具。
  • 转到调试控制台、CMD或PowerShell
  • 输入站点目录
  • 单击+新建文件
  • 输入神奇的文件名applicationHost.xdt并单击笔图标来编辑其内容
  • 复制并粘贴xdt转换文件(与Ruslan文章相同)

要启用代理的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>
  • 返回Azure应用服务并重新启动您的网站
  • 网站重启后会启用ARR,反向代理会按预期工作

Edi Wang made a video applying this setting step by step
DevCentral article recommended by Zaid Safadi,现在似乎已经过时了。

相关问题