【Container App】创建Container App后发现Application URL不完整
问题描述
新创建了一个Container App服务,构建在内部访问的环境中( Container App Environment配置了虚拟网络并设置为内部访问)。
##Container Apps Environment的网络配置如下:

当Container App应用部署完成后。查看到Application Url不完整,并不是一个有效的URL,且无法访问?

这是什么原因呢? 如何来解决它呢?
问题原因
这是因为Contianer App服务主动取消了默认的域名提供。
众所周知,在中国区的Azure环境中,所有的域名都需要进行ICP备案。而默认的域名 .azurecontainerapps.cn 是Azure所备案域名并只用于使用Container App服务。如果我们自己的应用部署在Container App上并对外提供服务,则需要自定义域名并完成ICP备案。
PS: 这点和App Service的备案公告内容一样:
1. ICP 许可证和 ICP 备案是什么?如果我在 Azure 上部署我的服务,我需要 ICP 许可证或者 ICP 备案么?
ICP备案是工信部要求每一个在国内连接互联网的网站都必须要办的一个入网许可。
ICP许可证是网站经营的许可证,根据国家《互联网管理办法》规定,经营性网站必须办理ICP许可证,否则就属于非法经营。
Chinacloudapp.cn、Chinacloudapi.cn 和 Chinacloudsites.cn 域名由上海蓝云网络科技有限公司备案,仅用于向其客户提供 Azure 服务。如果您需要通过 Azure 平台对外提供服务,应使用自有的域名提供服务,并根据相关规定对自有域名做相应的 ICP 备案。通过Internet访问应用服务,仅可通过已完成ICP备案的自定义域名进行访问,任何通过应用服务默认域名的访问将会被封堵。(了解更多详情 : https://www.azure.cn/support/icp/WebApp/index.html)
是否需要办理 ICP 许可证,如您不能根据相关规定结合业务自行判断,请联系开办地通信管理局进行确认。
解决方法
当了解到原因后,为Container App配置自定义域名就可以了。
有两处可以配置自定义域名:
1: Container App Environment中的DNS suffix,可以配置通配域名(例如 *.mytest.blog)。它会统一为构建在同一个Environment下的Apps 根据名称生成子域名。
2:Container App中配置自定义域名,不能使用通配符。此域名只对当前App有效。
本文使用的是第一种,在Container App Environment中配置通配域名。
第一步:在Azure环境中创建一个Private DNS Zone
名称就指定为 mytest.blog,添加一个A记录,IP地址为Container App Environment的Static IP

第二步:配置Contianer App Environment的DNS Suffix

第三步:生成一个自签名证书并上传
(如果有使用Azure Key Vault服务,可以直接通过它来生成一个自签名证书)
openssl.exe req -x509 -nodes -sha256 -days 3650 -subj "/CN=*.mytest.blog " -newkey rsa:2048 -keyout mytest.blog.key -out mytest.blog.crt openssl.exe pkcs12 -export -in mytest.blog.crt -inkey mytest.blog.key -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider" -out mytest.blog.pfx
openssl命令执行效果图:

成功!
回到Container App中,查看Application URL已经完成。进入Console中,也可以通过curl 进行域名解析和访问

参考资料
- 【Azure 环境】把OpenSSL生产的自签名证书导入到Azure Key Vault Certificate中报错 : https://www.cnblogs.com/lulight/p/16859848.html
- ICP 备案操作解析 : https://www.azure.cn/support/icp/icp-faq/
- What is an Azure Private DNS zone? https://learn.microsoft.com/en-us/azure/dns/private-dns-privatednszone
- Container App DNS(域名系统): https://docs.azure.cn/zh-cn/container-apps/networking?tabs=workload-profiles-env%2Cazure-cli#dns
【Container App】创建Container App后发现Application URL不完整的更多相关文章
- 【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
欢迎使用 Blazor!Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI. 共享使用 .NET 编写的 ...
- 企业版证书打包APP发布,安装后闪退问题解决。
企业版证书打包APP发布,安装后闪退问题解决. 我现在就碰到这个问题,只要项目与Swift沾上边的,都会出问题. 如果我们是直接使用开发者证书进行真机调试,那么就不会出现问题,像往常一样好.但如果我们 ...
- iOS 10 创建iMessage App
原文作者 澳大利亚19岁少年--Davis Allie ----原文地址 时值中秋佳节, 送给出门在外的程序猿们 ! 骚年们, 自己写个表情包斗图可否 ! 斗-seal.svg.png 第一. 介绍 ...
- 根据iOS 10 的新特性,创建iMessage App,可用于自定义表情
第一. 介绍(原文作者 澳大利亚19岁少年--Davis Allie ----原文地址) 随着iOS10的发布,苹果对开发者开放了Messages应用程序,开发人员现在可以创建他们自己的各种类型 并且 ...
- Django学习笔记(二)App创建之Model
通过实例学习, 构建一个投票(Polls)Application, 目标结果包含两个site, 一个site用来显示投票问题以及投票结果(即将展示出来的网站), 另一个site用来管理Poll实例的增 ...
- 利用spring boot创建java app
利用spring boot创建java app 背景 在使用spring框架开发的过程中,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置和复杂的bean依赖关系,特别是在使用mvc的时候各 ...
- WeX5学习笔记-创建本地APP相关问题
1.在Native新建[创建本地APP]时, "服务地址”为本地IP和端口号,例如本地IP为192.168.253.1,端口号为8080,则设置为http://192.168.253.1:8 ...
- 用PhpStorm IDE创建GG App Engine PHP应用教程
在上一篇教程里我们已经介绍了如何为PhpStorm搭建软件环境,那么今天就该是正式的开始创建App了: 3.创建首个Google App Engine PHP Application 现在我们就可以开 ...
- nodejs express 框架解密2-如何创建一个app
本文是基于express 3.4.6 的 1.在我们的app.js 文件里面有这么几行 http.createServer(app).listen(app.get('port'), function( ...
- Android中为APP创建快捷方式的原理(自己的理解)
我们首先来看Android中为APP创建快捷方式的原理: 从图上可以看出,Android大致分7步完成快捷方式的创建: 第一步:Android系统的launcher程序会调用它的pickShortcu ...
随机推荐
- 60个 Linux C/C++ 实战小项目,挑战年薪30万+
大家好啊!我是小康. 最近公众号后台收到好多小伙伴的私信: "小康哥,我已经把<C++ Primer>啃完了,Linux 环境也玩得差不多了,但就是不知道该做啥项目练手...&q ...
- SpringMVC框架第一天
目录 SpringMVC的基本概念 三层架构和MVC 三层架构 MVC模型 MVC概述 SpringMVC是什么 SpringMVC在三层架构的位置 SpringMVC的优势 SpringMVC的入门 ...
- mysql开启关闭服务
windows: net start mysql net stop mysql centos: --开启服务 service mysqld start --关闭服务 service mysqld st ...
- TreeSet练习 根据字符串长度排序
String类已经实现了Comparable接口,我们可以根据TreeSet提供的构造器传入自己的比较器. public class Set4 { public static void main(St ...
- 【BUG】Python3|爬虫请求得到的json中的值全是问号
如图: 原因:headers的"Accept":是text/html,application/xhtml+xml,application/xml;q=0.9,image/webp, ...
- Python基础 - 多进程(下)
上篇主要对多任务从生活上来认识, 同时引入对 进程 的认识, 即操作系统资源分配的基本单元. 然后通过对 并发, 并行 概念的认识, 去理解 任务调度. 然后用内置的 multiprocessing ...
- 使用libdivide加速整数除法运算
在x86和ARM平台上,整数除法是相对较慢的操作.不巧的是除法在日常开发中使用频率并不低,而且还有一些其他常用的运算依赖于除法操作,比如取模.因此频繁的除法操作很容易成为程序的性能瓶颈,尤其是在一些数 ...
- Java并发基础之多线程
文章也发布在我的个人博客上:https://blog.ysboke.cn/archives/129.html 概述 每个Thread类的示例都代表一个线程,而进程是操作系统级别的多任务,JVM就是运行 ...
- echart的使用心得
前言:由于本人在最近的公司中接触了一些与数据可视化有关的项目,所以特意花了一些时间去学习了echarts,以下是我个人在使用与学习echarts的一些心得体会. 1.首先我们需要知道的是什么是Echa ...
- SharpIco:用纯C#打造零依赖的.ico图标生成器,支持.NET9与AOT编译
前言 最近一直在完善我今年的两款桌面软件:视频剪辑工具 Clipify 和 AI 文章创作工具 StarBlogPublisher 虽然界面是基本完善了,但图标还是默认的,显得很不专业 于是我打算给这 ...