很多新手在配置服务器时,都会遇到一个很头疼的问题:明明服务已经启动了,网页就是打不开。这通常是因为 Linux 系统默认的防火墙没有开放 80 端口。80 端口是 HTTP 服务的默认端口,几乎所有对外提供网页服务的服务器都需要打开它。无论你是用 Nginx、Apache 还是其他 Web 服务器,开放 80 端口是让外部用户访问你网站的第一步。
Linux 打开 80 端口后还是打不开怎么办
有时候你按照教程一步步操作,防火墙也加了规则,但浏览器里就是访问不了。这种情况通常不只是防火墙的问题,还得看看服务器本身有没有监听 80 端口。你可以先用 netstat -tlnp | grep 80 这个命令看一下,如果输出里没有显示 80 端口被监听,说明你的 Web 服务根本没启动或者配置有问题。

另一个容易被忽略的点是云服务商的安全组规则。现在大多数人用的都是云服务器,像阿里云、腾讯云、华为云这些平台,除了服务器内部的防火墙,它们自己还有一层安全组规则。你得登录云控制台,找到你的实例,看看安全组里有没有放行 80 端口的入方向规则。如果安全组没放开,服务器内部再怎么折腾也没用。
还有个常见坑是 SELinux 或者 AppArmor 这类安全模块在捣乱。这些安全机制默认会限制很多操作,包括 Web 服务绑定端口。你可以临时关掉 SELinux 试试,用 setenforce 0 命令,如果关了之后能正常访问linux嵌入式开发,那就得去调整 SELinux 的策略,而不是一直关着它。
怎么用命令快速打开 80 端口
对于大部分 Linux 发行版,最常用的防火墙工具是 firewalld 和 iptables。如果你用的是 CentOS 7 以上的版本,默认就是 firewalld。打开 80 端口的命令很简单:firewall-cmd --zone=public --add-port=80/tcp --permanent,然后 firewall-cmd --reload 重载一下防火墙规则。这里注意那个 --permanent 参数,加了它才会永久生效,不然重启就失效了。
如果你用的是 Ubuntu 或者 Debian 系统,默认的防火墙工具可能是 ufw。打开 80 端口就一条命令:ufw allow 80/tcp。ufw 的设计理念就是简单,所以操作起来很直观。如果你之前没启用 ufw,需要先 ufw enable 开启防火墙服务。
有些老系统或者你自己装的最小化系统,可能还是用 iptables。这时候就需要手动添加规则:iptables -I INPUT -p tcp --dport 80 -j ACCEPT。注意这个规则重启后会丢失linux打开80端口,得用 service iptables save 或者 iptables-save > /etc/iptables/rules.v4 保存一下。iptables 的规则是顺序执行的,如果你前面有拒绝所有连接的规则,这条允许规则必须放在它前面。
80 端口被占用如何处理

有时候你明明想启动 Web 服务,却提示端口被占用。这种情况八成是之前装过 Apache 或者 Nginx,而且它们还在后台运行着。先用 lsof -i :80 或者 ss -tlnp | grep 80 看看是哪个进程占用了端口。找到进程 ID 后,用 kill -9 进程ID 强制杀掉它。
还有一种情况是你的 Web 服务配置了多个监听端口,比如有些服务默认会同时监听 80 和 8080。如果你只想用 80 端口,得去配置文件里把其他端口注释掉或者删掉。Nginx 的配置文件在 /etc/nginx/nginx.conf 或者 /etc/nginx/sites-enabled/ 目录下,Apache 的配置在 /etc/httpd/conf/httpd.conf 或者 /etc/apache2/ports.conf 里。
如果你确实需要同时运行多个 Web 服务,那就只能用不同的端口号,然后用反向代理的方式把请求转发到不同服务上。比如 Nginx 监听 80 端口,然后根据域名把请求代理到本地的 8080 或者 3000 端口上。
80 端口开放后如何测试连通性
开放端口只是第一步,你得确认它真的能通。最简单的方法就是在服务器本机用 curl 测试一下。如果本机能返回网页内容,说明 Web 服务没问题linux打开80端口,问题可能出在外部访问上。

外部测试可以用另一台电脑或者手机红帽linux系统下载,打开浏览器直接输入你的服务器公网 IP。如果打不开,先检查前面说的云安全组。也可以用 telnet 命令测试:telnet 你的服务器IP 80,如果能连接上,说明端口是通的。如果 telnet 连不上,那肯定还有地方没配置对。
还有一个很实用的在线工具网站,叫“端口扫描”,你输入 IP 和端口号就能检测到 80 端口是否对外开放。不过要注意,现在很多云服务商会屏蔽 ICMP 协议,所以你 ping 不通不代表端口没开,最好直接用 TCP 方式测试。
