点击上方蓝字关注“汪宇杰博客”

导语

我们在IIS上经常使用 Application Request Routing (ARR) 模块做反向代理。Azure App Service 使用的也是 IIS,照理来说应该也能做反代,但默认情况下它是不行的,我们来看看如何给在 App Service 上启用 ARR。

实验

我有个网站 https://dropdatabase.run/,想要在 https://dropdatabase.run/996 下反代 https://996.icu。为此,我得在站点根目录创建以下 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 以后,居然404了:

其实 web.config 文件是正确的,不工作是因为 App Service 尽管已经预装了 ARR 模块,但默认并没启用。

解决方法

这是一个微软文档里没有的方法,毕竟微软产品的奇怪姿势都得靠口口相传。

要在 App Service 上启用 ARR,你需要一份 xdt 文件,并上传到 site 目录。

在网站管理页面打开 Advanced Tools

进入 Debug console, CMD 或 PowerShell

进入 site 目录

点击 + New file

输入文件名 applicationHost.xdt 然后点击编辑图标

复制以下内容,并保存文件

<?xml version="1.0" encoding="UTF-8"?>

<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 App Service 网站管理页面,重启网站

稍等片刻,我们的反代就能正常运行了!

如果你没有看到这篇文章,可能需要996一周,然后放弃App Service 转而用 VM 部署反代了。哎,有钱人的云,就是需要关注我这样的公众号,才用得舒服。

汪宇杰博客

Azure | .NET | 微软 MVP

无广告,不卖课,做纯粹的技术公众号

喜欢本篇内容请点个在看

在 Azure App Service 上启用 Application Request Routing相关推荐

  1. 在 Azure App Service 上运行 .NET 6 预览版

    点击上方蓝字关注"汪宇杰博客" 原文:Jeff Martinez 翻译:Edi Wang 导语 .NET 6 是最新的 .NET 版本,它最终将.NET Core,Framewor ...

  2. Azure App Service 上的根证书

    点击上方蓝字关注"汪宇杰博客" 原文:Amol Mehrotra 翻译:Edi Wang 导语 App Service 有一个受信任的根证书列表,您不能在 App Service ...

  3. 远古魔力 | 在Windows 10和Azure App Service里跑上世纪的ASP

    ASP(没有.NET) 即 Active Server Pages (动态服务器页面)是一项由微软公司在1996年推出的技术,能够在IIS中运行动态网站.也许许多90后及千禧一代程序员并没有听说过它, ...

  4. Azure App Service 如何在第一时间用上最新版 .NET Core

    点击上方关注"汪宇杰博客" ^_^ 导语 微软会经常对 .NET Core 发布更新,通常为安全补丁.这不,今天早上,.NET Core 3.1.5 更新发布了.然而 Azure ...

  5. 提升Azure App Service的几个建议

    本文介绍了6个技巧,这些技巧可以改善Azure App Service托管应用程序的性能.其中一些技巧是你现在就可以进行的配置变更,而其他技巧则可能需要对应用程序进行一些重新设计和重构, 本文的几个技 ...

  6. 微软 Azure App Service 漏洞 NotLegit已存在4年,客户源代码被暴露

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 本月初,微软通知相关 Azure 客户称,Azure 云的一个特性 Azure App Service 中存在漏洞,至少从2017年9月起就暴露 ...

  7. Azure App Service Plan

    之前使用过Azure Function等Serverless服务,但没有对App Service Plan做深入的了解,今天看了官方文档,针对概念性的内容,跟大家做个总结和分享,希望对大家有帮忙. A ...

  8. IIS 的负载均衡【IIS7.0以上才可以使用】---- Application Request Routing(ARR)

    1.ARR依赖于以下组件: Microsoft URL Rewrite Module for IIS 7.0. Microsoft Web Farm Management Version 1 for ...

  9. java获取keyvault_使用 Key Vault 引用 - Azure App Service | Microsoft Docs

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 使用应用服务和 Azu ...

最新文章

  1. SpringBoot b2b2c 多用户商城系统(十五)Springboot整合RabbitMQ...
  2. android h5 书,android与H5交互
  3. Activiti 用户任务并行动态多实例(多用户执行流程)
  4. 要使一个问题能够用计算机解决,如何正确并解决在使用计算机中的问题?
  5. 记录一次有意思的XSS过滤绕过
  6. 移动平台开发项目(推箱子小游戏)
  7. eclipse引入jar类包的源代码
  8. 六安:在线监测 精准调控 构建智慧城市节水管理平台
  9. 使用Newtonsoft JsonConvert反序列化Json数据到DataTable
  10. 大智慧705服务器文件夹,大智慧2文件目录结构.doc
  11. 大数运算(加、减、乘、除)
  12. 跳过 Xcode 下载 iOS 模拟器
  13. cesium 页面多 viewer 地图加载过缓解决方案
  14. 动画 | 什么是红黑树?(基于2-3树)
  15. Java导出Excel,提示格式与文件扩展名不一致
  16. pythonhello world欢迎某某某同学_【第四章】python基本语法学习与练习题(慕课网习题)...
  17. android麦克风被禁用怎么办,为什么微信麦克风被禁用?如何开启?
  18. Unity3D中删除指定路径的文件+删除文件夹
  19. QKX-ZSZ-4000岩体真三轴动静载荷-应力应变曲线绘制软件
  20. 导师喜欢什么样的“真”研究生?(转科学网)

热门文章

  1. mysql 5.7.18 winx64安装配置方法
  2. org.eclipse.jdt.internal.compiler包下的类找不到
  3. 查看MySQL的当前日期
  4. Java网络编程二:Socket详解
  5. 如何查看自己的ubutu系统是32位的还是64位的
  6. sql-逻辑循环while if
  7. 如何使用QuickConnect远程访问Synology NAS
  8. java 输入流关闭顺序_Java IO流中先关闭输出流还是先关闭输入流?为什么?
  9. Facebook为Messenger应用添加群组付款功能
  10. Druid源码分析系列1:dataSource.init()的准备工作