Azure Ubuntu部署Hyperledger Composer后REST服务与Angular应用连接失败求助
解决Hyperledger Composer REST API与Angular应用无法访问的问题
你遇到的核心问题是Azure Ubuntu虚拟机的服务绑定策略与网络权限不匹配导致外部无法访问,我来帮你一步步排查解决:
1. 修正REST服务器的绑定地址
你执行composer-rest-server --card admin@my-network时,服务默认仅绑定localhost(127.0.0.1),这个地址只能在虚拟机内部访问,外部机器根本无法连接。启动时需要手动指定绑定到所有网络接口:
composer-rest-server --card admin@my-network --host 0.0.0.0
修改后服务会监听虚拟机的所有网卡,外部就能通过公网IP正常访问了。
2. 配置Azure网络安全组(NSG)放行端口
Azure虚拟机默认会阻止大部分外部端口的访问请求,你需要手动添加入站规则:
- 登录Azure门户,找到你的Ubuntu虚拟机
- 进入「网络」选项卡,点击对应的网络安全组
- 添加两条入站规则:
- 允许TCP端口3000(对应REST API服务)
- 允许TCP端口4200(对应Angular应用)
- 可以将规则的源地址范围设置为
Any(如果需要更安全,也可以指定你本地机器的固定IP)
3. 开放Ubuntu本地防火墙(UFW)
Ubuntu 18.04默认启用UFW防火墙,需要手动放行这两个端口:
sudo ufw allow 3000/tcp sudo ufw allow 4200/tcp sudo ufw reload
执行sudo ufw status可以确认规则是否已生效。
4. 验证服务监听状态
用以下命令检查服务是否真的在监听正确的地址:
# 检查REST服务器监听状态 netstat -tulpn | grep :3000 # 检查Angular服务监听状态 netstat -tulpn | grep :4200
如果输出里的Local Address是0.0.0.0:3000或:::3000,说明绑定正确;如果显示127.0.0.1:3000,则代表服务仍仅允许内部访问,需要重新启动服务并指定--host 0.0.0.0参数。
5. 使用虚拟机公网IP访问,而非localhost
最后,你在本地浏览器访问时,不能用localhost(这个地址指向你自己的本地机器),而是要替换成Azure虚拟机的公网IP地址:
- REST API Explorer:
http://<你的VM公网IP>:3000/explorer - Angular应用:
http://<你的VM公网IP>:4200
内容的提问来源于stack exchange,提问作者realChain Life
相关产品推荐
相关产品推荐

