GCP Compute Engine部署Apache访问报连接拒绝的解决方法
Google Cloud Compute Engine 部署Apache报连接被拒绝的正确配置方案
按以下步骤逐一排查配置,即可解决公网IP访问报ERR_CONNECTION_REFUSED的问题:
1. 先确认Apache服务本身正常监听公网可达端口
在VM实例的SSH终端执行以下操作:
- 执行
ss -tulpn | grep httpd查看端口监听状态- 正常返回结果必须包含
0.0.0.0:80或者:::80的监听记录 - 如果仅显示
127.0.0.1:80,说明Apache绑定了本地回环地址,编辑/etc/httpd/conf/httpd.conf配置文件,将Listen项修改为Listen 0.0.0.0:80,保存后执行systemctl restart httpd重启服务 - 如果执行命令无任何80端口相关输出,说明Apache启动异常,执行
httpd -t扫描配置文件语法错误,再通过tail -n 50 /var/log/httpd/error_log查看错误日志定位启动失败原因,修复后重新启动服务
- 正常返回结果必须包含
- 本地回环验证:执行
curl http://127.0.0.1,如果能返回Apache默认欢迎页的HTML内容,说明服务本身运行正常。
2. 放行Linux系统本地防火墙的80端口(最高发漏配项)
CentOS系统默认开启firewalld防火墙,默认不放行HTTP 80端口,和GCE平台侧的VPC防火墙是两层独立的访问控制,必须单独配置:
- 执行
firewall-cmd --state确认防火墙运行状态,如果返回running,依次执行以下命令放行HTTP/HTTPS流量:
firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --reload
- 如果使用iptables作为本地防火墙,执行以下规则放行80端口并保存:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT service iptables save
3. 复核GCE平台侧防火墙规则配置
不要仅确认规则存在,逐一核对以下配置项:
- 规则的目标网络标签,必须和对应VM实例配置的网络标签完全一致(大小写敏感)
- 规则方向为入站,允许TCP协议80端口,源地址范围配置为
0.0.0.0/0(公网任意地址可访问),如果仅配置了内网网段,公网访问会被拦截 - 确认不存在优先级更高的入站拒绝规则覆盖80端口的放行策略
- 访问时手动在浏览器地址栏输入
http://[你的VM外部IP],不要直接点控制台外部IP默认跳转的HTTPS链接,未配置443证书时HTTPS访问必然失败。
4. 特殊场景排查
如果以上配置全部完成仍无法访问,执行setenforce 0临时关闭SELinux测试访问,若可以正常连通,说明是SELinux策略拦截,重新加载SELinux的HTTP策略即可:restorecon -vR /etc/httpd。
内容的提问来源于stack exchange,提问作者echizenya_yota
相关产品推荐
相关产品推荐

