如何为Azure VM上的ASP.Net网站配置Let's Encrypt SSL并实现流量转发
实现域名请求先到Web App再转发至VM的方案
第一步:把GoDaddy域名指向Azure Web App
- 登录GoDaddy域名管理后台,找到DNS管理页面
- 删除原来指向VM公网IP的A/CNAME记录
- 新增一条CNAME记录:主机名填
www,值填你的Web App默认域名(格式是<你的Web App名>.azurewebsites.net) - 保存后等5-15分钟DNS生效,用
nslookup www.example.com验证是否指向Web App地址
第二步:给Web App配置反向代理,转发请求到VM
方法一:修改Web.config(适合ASP.NET类Web App)
- 打开Web App的Kudu控制台(地址是
https://<你的Web App名>.scm.azurewebsites.net) - 找到根目录的
web.config文件,编辑添加反向代理规则:
<system.webServer> <rewrite> <rules> <rule name="ForwardToVM" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://<VM公网IP或域名>/{R:1}" /> </rule> </rules> </rewrite> </system.webServer>
- 要是VM用HTTPS,就把
http://换成https://;另外得把Web App的所有出站IP加到VM的NSG入站允许规则里(Web App的出站IP在门户的「网络」->「出站IP地址」里能看到)
方法二:使用Application Request Routing扩展(更灵活)
- 在Azure门户进入你的Web App,点击「扩展」->「添加」,搜索
Application Request Routing并安装 - 安装完成后进入扩展配置页,把后端目标设成VM的公网IP或域名,配置好路径转发规则
- 保存配置后,Web App就会自动把所有请求转发到VM
第三步:验证转发是否正常
- 访问
https://www.example.com,查看页面能否正常加载 - 进入Web App的「监控」->「日志流」查看日志,确认请求确实被转发到VM
额外提醒
- 给VM配置静态公网IP,避免IP变动导致转发失效
- 如果VM需要获取客户端真实IP,得在反向代理配置里添加
X-Forwarded-For这类请求头,让ASP.NET网站能拿到真实IP - 用Web App的
Let's Encrypt扩展自动续期证书,省去手动更新的麻烦
内容的提问来源于stack exchange,提问作者Mansour Shaaban
相关产品推荐
相关产品推荐

