必须放行80和443端口才能使外部用户通过浏览器访问网站;需先启用firewalld服务,再用--permanent参数永久添加端口或http/https服务,最后执行--reload重载规则并验证。

让外部用户能通过浏览器正常访问你部署在Linux服务器上的网站,必须确保防火墙放行HTTP的80端口和HTTPS的443端口,否则请求会在到达服务前就被拦截丢弃。
确认firewalld服务已启用并运行
先检查firewalld是否处于活动状态:执行 sudo firewall-cmd --state,若返回 running 则继续;若报错或返回 not running,需先启用并启动服务:sudo systemctl enable firewalld && sudo systemctl start firewalld。
【firewalld未启用时,所有后续端口配置都不会生效】
永久开放80和443端口(按端口号)
方法一:直接添加TCP端口规则
执行以下两条命令,顺序无关紧要:
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
这两条命令将规则写入firewalld的持久化配置,重启后依然有效。不加 --permanent 参数只临时生效,系统重启即丢失。
永久开放80和443端口(按服务名)
方法二:使用内置服务名更安全、更简洁
firewalld预置了http和https两个标准服务定义,它们自动关联80/TCP和443/TCP,还包含协议协商等附加逻辑。
执行:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
这比手动填端口号更可靠——比如未来某版本https默认改用UDP(实际不会),服务定义会自动适配,而硬编码端口不会。
重载规则使配置立即生效
第一步:执行 sudo firewall-cmd --reload,强制firewalld读取磁盘上的永久规则并加载进内核。
第二步:验证是否成功,运行 sudo firewall-cmd --list-ports 查看裸端口列表,或用 sudo firewall-cmd --list-services 检查http/https是否在列。
第三步:确认80端口已启用,执行 sudo firewall-cmd --query-port=80/tcp,返回 yes 即表示成功。


















