在云服务上部署了程序之后,在外部访问时总是会遇到如下图的这种问题,一般都是由于端口未开放导致的.
原因如下:
在云服务器上部署的程序,外部调用的时候会通过两层验证,一层是阿里云的安全组验证,一层就是操作系统的防火墙.
因而如果我们想在外部访问到程序接口,就需要通过这两层验证.
一. 阿里云安全组
1. 找到对应的系统实例并选中
博主的实例就是在华北2中,选中后就可以获得实例的具体信息
2. 通过{更多->网络和安全组->安全组配置}来开放需要的端口
3. 新建或选中已有的安全组,点击配置规则
4. 点击手动添加,配置要开放的端口
比如博主的程序部署在9999接口,就可以简单配置如下图所示:
5. 配置完成后记得重启实例,以防止配置不生效
选中实例,点击重启即可,服务器里部署的程序也记得要重新启动呦
二. 服务器防火墙
通过防火墙有两种方案:
注: 方案实测适用于Centos7,对于Centos6等不做保证
1. 直接关闭防火墙
此方案简单且粗暴,虽然并不建议此方案,但为了大家方便,还是演示如下:
# systemctl stop firewalld 关闭防火墙
# systemctl status firewalld 查看防火墙状态
在防火墙关闭dead之后,外部就可以通过ip和接口调用到程序了
2. 在防火墙开放需要用到的端口
# systemctl start firewalld 启动防火墙
# firewall-cmd --zone=public --add-port=9999/tcp --permanent 防火墙开放端口9999
# firewall-cmd --reload 重新加载防火墙
# firewall-cmd --zone=public --list-ports 查看防火墙开放的端口
可以看到端口9999已经开放了
需要注意的是,执行开放端口的命令时,需要确保防火墙属于开启状态
三. 访问测试
可以看到,通过本地浏览器已经可以访问到云服务器上的接口了
四. 附言
如有谬误遗漏,欢迎评论区留言讨论指正!