常见原因是服务器防火墙默认拦截80端口请求,需显式放行http服务或指定端口;应检查防火墙状态、放行80端口、验证端口开放性,并确认云平台安全组配置。

内网部署PHP框架项目后,局域网其他设备无法访问首页,常见原因是服务器防火墙默认拦截80端口请求,必须显式放行HTTP服务或指定端口才能打通访问链路。
确认当前防火墙状态与模式
登录服务器终端,执行sudo ufw status verbose(Ubuntu)或sudo firewall-cmd --state(CentOS/RHEL),观察输出是否为active。若显示inactive,跳过后续放行步骤;若为active,继续操作。
Ubuntu系统下,若返回Status: inactive,说明UFW未启用,无需配置;但需检查是否启用了iptables或nftables——运行sudo iptables -L -n | head -5,若有规则列表输出,则实际生效的是iptables,需按其规则处理。
放行HTTP服务端口(推荐方式)
方法一(Ubuntu UFW):
执行sudo ufw allow 'Apache Full'或sudo ufw allow 'Nginx Full',自动开放80、443及对应服务所需全部端口;【该命令会同时放行IPv4和IPv6的HTTP/HTTPS流量】。
方法二(CentOS firewalld):
执行sudo firewall-cmd --permanent --add-service=http → sudo firewall-cmd --permanent --add-service=https → sudo firewall-cmd --reload。
方法三(通用iptables):
运行sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT,立即生效;如需持久化,将规则保存至/etc/iptables/rules.v4(Debian/Ubuntu)或使用iptables-save > /etc/sysconfig/iptables(RHEL/CentOS)。
验证端口是否真正开放
第一步:在服务器本地执行curl -I http://127.0.0.1,确认返回HTTP/1.1 200 OK或类似成功响应;
第二步:从另一台局域网设备(如笔记本)执行telnet 192.168.x.x 80,若连接成功(光标停留无报错),说明端口已通;若提示Connection refused,说明Web服务未运行;若提示Could not open connection,大概率是防火墙仍拦截;
第三步:检查云服务器额外安全组——若部署在阿里云、腾讯云等平台,【必须登录控制台,在“安全组”规则中手动添加入方向TCP 80端口放行策略,否则即使本地防火墙放开也无效】。
关闭SELinux(仅当启用且干扰时)
执行sestatus,若输出中current mode为enforcing,临时切换为宽容模式:sudo setenforce 0;
此操作不修改配置文件,重启后恢复;如需永久关闭,编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后重启系统。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











