无论是运维还是后台亲自操刀在云服务器上部署项目,往往会遇到项目部署上去了,也确定项目正常运行,但还是没法访问的问题。
如果没有经验的小伙伴,很容易陷入疑惑的状态,无从下手解决。
其实这涉及到云平台安全组、服务器防火墙以及端口的设置。
比如部署一个8080端口项目到阿里云centos云服务器,API访问的路径是这样的,如果从客户端到项目服务的访问链路中,任何一个不通都会导致服务无法访问。
阿里云安全组:安全组是一种虚拟防火墙,能够控制ECS实例的出入站流量。安全组的入方向规则控制ECS实例的入站流量,出方向规则控制ECS实例的出站流量。
正确配置: 把服务器需要对外的端口(如80,443,8080端口),都需要配置入方向的允许策略。
centos防火墙:CentOS 使用的防火墙是 iptables,它是一个功能强大的 Linux 防火墙工具。
正确配置:
开放80端口:firewall-cmd --permanent --add-port=80/tcp
开放443端口:firewall-cmd --permanent --add-port=443/tcp
开放8080端口:firewall-cmd --permanent --add-port=8080/tcp
配置完记得刷新防火墙规则:firewall-cmd --reload
当然如果配置好阿里云安全组,也可以直接关闭centos防火墙,关闭命令:service firewalld stop 或者 systemctl stop firewalld
到此大概率能够解决项目部署了但无法访问的问题了。
如果做了以上操作还无法访问,结合telnet命令(用来检测目标IP端口是否通畅)逐一排查问题。
Linux系统安装telnet:yum install telnet进行安装
window系统安装telnet:控制面板-程序和功能-打开或关闭windows功能-勾选telnet选项
telnet命令用法:telnet 服务器IP 检查端口
怎么排查?
首先在云服务器使用telnet 服务器内网IP 8080(服务器内网IP可以在阿里云服务器示例中查看),这一步确保服务器内部能够正常访问项目服务。
第二步则在自己的开发电脑上使用telnet,如果能够通畅访问,可OK,如果不能访问,按照我上面的API访问的路径,逐一检查安全配置。
如果还有其它排查方式,欢迎评论讨论,继续完善该文章。
【推荐阅读】
1:程序员如何脱单?看完脱单率至少增加80%
2:【tomcat 启动报错】The Tomcat connector configured to listen on port 8080 failed to start问题解决