【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败
问题描述
使用微软API管理服务(Azure API Management),简称APIM。 因为公司策略要求只能内部网络访问,所以启用了VNET集成。集成方式见: (在内部模式下使用 Azure API 管理连接到虚拟网络:https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet?tabs=stv1)
当APIM配置好后,直接通过CURL命令访问APIM的网关接口(如:curl https://bei3apim.azure-api.cn/httpbin/get -v ),请求响应成功。
但是,直接在门户上访问时,为什么一直都报错 “Could not complete the request. Please try again later.”
问题分析
首先,请求通过APIM 网关已经能成功转发请求到后端服务器,并且返回状态为200。获得正确的返回结果。
然后,这个问题,只发生在APIM门户的 Test 页面,并且当点击“Test” 按钮后,马上就触发了API 管理提示的错误。
所以,判断这个问题,就发生在APIM门户页面端,是JS的一些执行报错。所以可以通过浏览器开发模式(F12)查看,Console中的输出,检测JS执行的错误消息。
谜底揭晓:因为APIM的Test功能是把请求先发送到一个代理服务器( https://apimanagement-cors-proxy-mc.azure-api.cn/ )上执行,而在内网中,这个代理服务器URL无法被解析。
解决方法:在虚拟网络的DNS服务器中,加上对域名(apimanagement-cors-proxy-mc.azure-api.cn)的解析。或者直接在当前的VM中修改windows host文件(C:WindowsSystem32driversetc)
解题步骤
1) 在公网中,通过 nslookup apimanagement-cors-proxy-mc.azure-api.cn 解析出它的IP地址
![](https://img2022.cnblogs.com/blog/2127802/202211/2127802-20221111213001002-528162386.png)
2) 进入VM 的Host文件,添加 IP 域名记录
3) 刷新APIM Test页面,再次点击Test Send 按钮,请求发送成功!
[END]
参考资料
在内部模式下使用 Azure API 管理连接到虚拟网络:https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet?tabs=stv1
相关文章
- Go程序设计语言导读
- 反欺诈架构中的数据架构及其技术挑战
- 成功实施大数据项目的五项基本要求
- Erlang分布式在linux和windows上的注意事项
- Processing编程学习指南导读
- vi常用命令
- 嵌入式操作系统风云录:历史演进与物联网未来第2章 Chapter2
- 什么是 Docker?
- sicp 2.3小结习题尝试解答
- PHP异步的玩法
- 嵌入式操作系统风云录:历史演进与物联网未来Chapter3 第3章
- redhat9安装subversion手记
- ruby字符串String的一个trick
- 海量数据实时更新太慢?Lambda架构大法好!
- Pivotal 刘伟光:看待Docker 和 PaaS的正确视角
- 勾勒物联网与大数据的数据中心路线图
- 让ruby简化你的工作之blog阅读器
- 改了下rss-reader,支持atom了
- 嵌入式操作系统风云录:历史演进与物联网未来导读
- 如何设置一个基本的OpenLDAP Server