当前位置:首页>Linux>Linux 防火墙入门Nginx 都启动了,外面就是访问不了,原来是防火墙挡了 80 端口

Linux 防火墙入门Nginx 都启动了,外面就是访问不了,原来是防火墙挡了 80 端口

  • 2026-10-11 07:04:07
Linux 防火墙入门Nginx 都启动了,外面就是访问不了,原来是防火墙挡了 80 端口

Linux 防火墙入门

Nginx 都启动了,外面就是访问不了,原来是防火墙挡了 80 端口

Linux基础  实战课 

Linux 基础实战课 · 进阶篇

————————————————

💬 有个项目上架了一台 Web 服务器,Nginx 配好了,systemctl start nginx 也没报错,本地 curl localhost 正常返回页面。一切看起来都没问题——但同事从办公室电脑上就是访问不了。

排查了 ip、子网掩码、网关、DNS,全对。最后要放弃的时候,有人说了句「防火墙开了没有?」——果然,80 端口没放行。一条 firewall-cmd --add-port=80/tcp 搞定,前后排了两小时。

防火墙是 Linux 服务器的「看门大爷」,你不说让谁进,它全给你拦了。这篇把 firewalld 和 ufw 两个最常用的防火墙工具讲清楚。

————————————————

一、先分清两个工具

你遇到的服务器防火墙,大概率是这两个之一:

工具

常见于

特点

firewalld

RHEL/CentOS 7+, AlmaLinux, Rocky Linux

功能强,分区 zone 概念

ufw

Ubuntu, Debian

简单易用,命令短,上手快

💡 先确认你的系统用哪个:firewall-cmd --state 有输出就是 firewalld,ufw status 有输出就是 ufw。都显示 inactive 说明防火墙没开。

二、firewalld 核心操作

看状态:

systemctl status firewalld

看防火墙服务状态

firewall-cmd --state

看防火墙是否运行中

firewall-cmd --list-all

查看所有规则

开放端口(最常用):

firewall-cmd --add-port=80/tcp --permanent

永久开放 80 端口

firewall-cmd --add-port=443/tcp --permanent

永久开放 443 端口

firewall-cmd --reload

重载,让新规则生效

⚠️ 加 --permanent 表示永久写入配置,不加只对当前运行有效——重启后会丢。记得改完以后 firewall-cmd --reload 让配置生效。

按服务名开放(比端口更直观):

firewall-cmd --add-service=http --permanent

开放 HTTP 服务

firewall-cmd --add-service=https --permanent

开放 HTTPS 服务

firewall-cmd --add-service=mysql --permanent

开放 MySQL 端口

删规则:

firewall-cmd --remove-port=8080/tcp --permanent

关闭 8080 端口

firewall-cmd --reload

重载生效

查看当前开了哪些端口:

firewall-cmd --list-ports

列出所有开放的端口

三、ufw 核心操作

ufw(Uncomplicated Firewall)如其名,命令超级简单:

sudo ufw status

看状态

sudo ufw enable

开启防火墙

sudo ufw disable

关闭防火墙

放行端口:

sudo ufw allow 80

开放 80 端口

sudo ufw allow 443

开放 443 端口

sudo ufw allow 22

开放 SSH 端口

放行服务(和 firewalld 类似):

sudo ufw allow http

开放 HTTP

sudo ufw allow https

开放 HTTPS

删除规则:

sudo ufw delete allow 80

关闭 80 端口

sudo ufw status numbered

看规则编号,方便删

sudo ufw delete 3

删第 3 条规则

💡 如果你是阿里云/腾讯云/华为云的云服务器,还有一层「安全组」防火墙在外面!服务器内部防火墙 + 云平台安全组两层都要放行,缺一个端口都不通。

四、实战:新部署服务的端口放行标准流程

假设你刚装好 Nginx,需要让外面能访问:

① 确认服务在监听目标端口:

ss -tlnp | grep :80

确认 Nginx 在监听 80 端口

② 开防火墙端口:

firewall-cmd --add-port=80/tcp --permanent && firewall-cmd --reload

firewalld 一把梭

或

sudo ufw allow 80

ufw 更简单

③ 验证端口外面能否连上(从另一台机器测):

telnet 服务器IP 80

telnet 测试

或

nc -zv 服务器IP 80

ncat 快速探测

④ 如果还不通,查云平台安全组(阿里云 ECS → 安全组 → 入方向规则 → 添加 80 端口)。

这套流程你跑两遍就会了。下次再遇到「服务起了连不上」的情况,先别怀疑代码出 bug,查防火墙是第一优先级。

————————————————

下篇预告:《Linux 打包压缩实战:tar / zip,备份传文件全靠它》

💬 你第一次被防火墙「坑」是什么时候?

是忘了开端口,还是云平台安全组没配?评论区分享一下

👍 点赞💬 留言🔄 转发给需要的朋友

有问题欢迎评论区留言,看到都会回复

请在微信客户端打开

最新文章

随机文章