在阿里云的ECS云主机上(CentOS)无法通过外网ip去访问自己的网站的解决办法
首先我们在阿里云的云服务器管理控制台中复制到ECS的公网ip并粘贴到浏览器上访问得到下面的结果:
度娘上搜索资料发现绝大部分的解决办法都是在服务器的安全组上配置上80端口
在配置好服务器的安全组后重启了服务器查询访问,得到的结果还是没有变化。
此时排除了服务器的安全组问题。
那么我们就应该测试排查看是否为服务器问题
首先我们打开Window下的cmd窗口,然后ping一下我们的服务器公网ip测试是否可用
结果可见我们的服务器公网IP是可以被外网访问的。
随后我们用工具(SocketTool)测试IP的端口是否可接通
经过SocketTool工具的测试我们可以发现服务器的22端口是可接通的,而80端口是不可接通的。接下来我们就应该去查看服务器内部的防火墙等问题
首先我们连接上自己的服务器(Window的cmd窗口下输入ssh root@IP)
然后执行命令(netstat -ln)(此标签详细解释: https://blog.csdn.net/rqy1994/article/details/51398547)
在执行结果中我们可以看到其中并没有监听80端口,由此得出我们的服务器并未开发80端口。
那么接下来我们就是要给服务器配置上:
首先需要 通过 yum install httpd -y安装好http服务
(在yum安装http服务时可能出现找不到包的情况此时我们修改/etc/yum.conf文件,将文件中的exclude那行注释掉,也可只删除httpd字段。)
然后再通过 systemctl start httpd 开始http服务
当然也可以通过systemctl enable httpd 设置为开机自动启动httpd服务
systemctl stop httpd 结束http服务
http服务开启之后,如果配置过防火墙的规则的,就需要设置防火墙允许80端口
firewall-cmd --zone=public --add-port=80/tcp
注:在我们给服务器安装http服务的时候可能出现报错(Failed to start httpd.service: Unit httpd.service not found.)
解决方法如下:
1.找到yum.conf
[root@d78acc291c9e var]# find / -name yum.conf
/etc/yum.conf
2.编辑yum.conf文件,注释掉exclude那行,也可只删除httpd
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
#exclude=httpd nginx php mysql mairadb python-psutil python2-psutil
3.重新通过(yum install httpd -y)安装http服务
4.通过httpd -v查看http服务
[root@d78acc291c9e var]# httpd -v
Server version: Apache/2.4.37 (centos)
Server built: Dec 23 2019 20:45:34
//---------------------------------------------------------------------------------------
在我们为服务器安装上fttp服务和设置安全组后若还是不能服务,则需查看服务器的防火墙是否放行
执行(firewall-cmd --list-ports)查看防火墙放行的端口
可以看到防火墙并未放行80端口
下面是Linux防火墙操作所用到的代码
====配置firewall-cmd
查看版本:firewall-cmd --version
查看帮助:firewall-cmd --help
显示状态:firewall-cmd --state
查看所有打开的端口:firewall-cmd --zone=publiu --list-ports
更新防火墙规则:firewall-cmd --reload
查看区域信息:firewall-cmd --get-active-zones
查看指定接口所属区域:firewall-cmd --get-zone-of-interface-eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态:firewall-cmd --panic-off
查看是否拒绝:firewall-cmd --query-panic
===开启一个端口
添加:
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后生效)
重新载入:
firewall-cmd --reload
查看:
firewall-cmd --zone=public --query-port=80/tcp
删除:
firewall-cmd --zone=public --remove-port=80/tcp --permanent
注:本文参考链接:
1.https://blog.csdn.net/qq_28949495/article/details/82227233?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-3&spm=1001.2101.3001.4242
2.https://blog.csdn.net/xiaopeng147258/article/details/80412912?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control
3.https://www.cnblogs.com/v5captain/p/12596403.html