在 Azure App Service 上启用 Application Request Routing
点击上方蓝字关注“汪宇杰博客”
导语
我们在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相关推荐
- 在 Azure App Service 上运行 .NET 6 预览版
点击上方蓝字关注"汪宇杰博客" 原文:Jeff Martinez 翻译:Edi Wang 导语 .NET 6 是最新的 .NET 版本,它最终将.NET Core,Framewor ...
- Azure App Service 上的根证书
点击上方蓝字关注"汪宇杰博客" 原文:Amol Mehrotra 翻译:Edi Wang 导语 App Service 有一个受信任的根证书列表,您不能在 App Service ...
- 远古魔力 | 在Windows 10和Azure App Service里跑上世纪的ASP
ASP(没有.NET) 即 Active Server Pages (动态服务器页面)是一项由微软公司在1996年推出的技术,能够在IIS中运行动态网站.也许许多90后及千禧一代程序员并没有听说过它, ...
- Azure App Service 如何在第一时间用上最新版 .NET Core
点击上方关注"汪宇杰博客" ^_^ 导语 微软会经常对 .NET Core 发布更新,通常为安全补丁.这不,今天早上,.NET Core 3.1.5 更新发布了.然而 Azure ...
- 提升Azure App Service的几个建议
本文介绍了6个技巧,这些技巧可以改善Azure App Service托管应用程序的性能.其中一些技巧是你现在就可以进行的配置变更,而其他技巧则可能需要对应用程序进行一些重新设计和重构, 本文的几个技 ...
- 微软 Azure App Service 漏洞 NotLegit已存在4年,客户源代码被暴露
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 本月初,微软通知相关 Azure 客户称,Azure 云的一个特性 Azure App Service 中存在漏洞,至少从2017年9月起就暴露 ...
- Azure App Service Plan
之前使用过Azure Function等Serverless服务,但没有对App Service Plan做深入的了解,今天看了官方文档,针对概念性的内容,跟大家做个总结和分享,希望对大家有帮忙. A ...
- IIS 的负载均衡【IIS7.0以上才可以使用】---- Application Request Routing(ARR)
1.ARR依赖于以下组件: Microsoft URL Rewrite Module for IIS 7.0. Microsoft Web Farm Management Version 1 for ...
- java获取keyvault_使用 Key Vault 引用 - Azure App Service | Microsoft Docs
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 使用应用服务和 Azu ...
最新文章
- SpringBoot b2b2c 多用户商城系统(十五)Springboot整合RabbitMQ...
- android h5 书,android与H5交互
- Activiti 用户任务并行动态多实例(多用户执行流程)
- 要使一个问题能够用计算机解决,如何正确并解决在使用计算机中的问题?
- 记录一次有意思的XSS过滤绕过
- 移动平台开发项目(推箱子小游戏)
- eclipse引入jar类包的源代码
- 六安:在线监测 精准调控 构建智慧城市节水管理平台
- 使用Newtonsoft JsonConvert反序列化Json数据到DataTable
- 大智慧705服务器文件夹,大智慧2文件目录结构.doc
- 大数运算(加、减、乘、除)
- 跳过 Xcode 下载 iOS 模拟器
- cesium 页面多 viewer 地图加载过缓解决方案
- 动画 | 什么是红黑树?(基于2-3树)
- Java导出Excel,提示格式与文件扩展名不一致
- pythonhello world欢迎某某某同学_【第四章】python基本语法学习与练习题(慕课网习题)...
- android麦克风被禁用怎么办,为什么微信麦克风被禁用?如何开启?
- Unity3D中删除指定路径的文件+删除文件夹
- QKX-ZSZ-4000岩体真三轴动静载荷-应力应变曲线绘制软件
- 导师喜欢什么样的“真”研究生?(转科学网)
热门文章
- mysql 5.7.18 winx64安装配置方法
- org.eclipse.jdt.internal.compiler包下的类找不到
- 查看MySQL的当前日期
- Java网络编程二:Socket详解
- 如何查看自己的ubutu系统是32位的还是64位的
- sql-逻辑循环while if
- 如何使用QuickConnect远程访问Synology NAS
- java 输入流关闭顺序_Java IO流中先关闭输出流还是先关闭输入流?为什么?
- Facebook为Messenger应用添加群组付款功能
- Druid源码分析系列1:dataSource.init()的准备工作