服务器配置端口,指的是服务器上各网络服务所监听或依赖的TCP/UDP端口号,主要包括Web服务、远程连接、数据库连接及运维管理四大类。理解这些端口的分工,你才知道该放行哪些、关闭哪些,服务器才能既稳定又安全。
服务器常用端口对照表(基础服务篇)
端口不是凭空存在的,它是操作系统与外部网络通信的“门牌号”,每个服务启动时,都会默认占用一个固定端口,除非你手动修改,对于绝大多数运维场景,下面这几个端口是你必须认识的。
| 服务名称 | 默认端口 | 协议类型 | 核心用途 |
|---|---|---|---|
| HTTP | 80 | TCP | 网站明文访问入口 |
| HTTPS | 443 | TCP | 网站加密访问入口,比80更常用 |
| SSH | 22 | TCP | Linux服务器远程登录与文件传输 |
| FTP | 21/20 | TCP | 传统文件上传下载,控制链路21,数据链路20 |
| DNS | 53 | UDP/TCP | 域名解析请求转发 |
| SMTP | 25 | TCP | 邮箱发送邮件 |
| 远程桌面 | 3389 | TCP | Windows服务器图形界面远程管理 |
80与443端口是Web服务器的生命线
当你访问一个网站时,浏览器实际上是在向服务器的80端口(HTTP)或443端口(HTTPS)发起连接,如果你在服务器上部署了Nginx或Apache,却没有在防火墙里放行这两个端口中的任意一个,就会出现“网页无法打开”的尴尬局面。
特别提醒: 现在主流搜索引擎和浏览器都强制要求HTTPS加密,所以443端口基本是必开项,如果你配置了SSL证书,80端口往往只是用来做跳转,把所有流量导向443。
SSH端口22:你的服务器大门钥匙
Linux服务器上最常见的远程管理方式就是SSH,默认监听22端口,行业共识认为,22端口长期暴露在公网,遭受暴力破解的概率会成倍增加,不少有经验的管理员会把SSH默认端口改成像1022、6022这样的高位端口,改端口本身不能算高安全手段,但配合密钥登录,能在相当大程度上过滤掉那些只扫默认端口的脚本机器人。
云服务器安全组端口如何配置
如果你在简米云、酷番云或华为云上买过服务器,一定会遇到“安全组”这个概念,安全组其实是云平台在虚拟机外面套了一层虚拟防火墙,相比服务器内部的firewalld或iptables规则,安全组在流量进入云平台底层的时候就做了过滤。
安全组放行规则怎么设置
登录云厂商控制台,找到“安全组”或“网络和安全”菜单,进入实例绑定的安全组后,一般会看到出方向和入方向两条策略,你需要添加一条入方向规则,把协议选为HTTP或HTTPS,端口范围填80或443,源地址选择“所有IPv4”(0.0.0.0/0),这样公网用户就能访问你的网站了。
需要注意,云服务器安全组端口如何配置,和服务器内部防火墙是两个独立层面。内网防火墙安全放行,外网安全组拒绝放行,端口照样不通。 排查问题时要两边都要看,别只盯着一处,业内专家指出,实际排障中,相当一部分“端口不通”的根因,是安全组规则没生效,而不是服务器进程本身挂了。
简米云与酷番云安全组配置差异
虽然操作逻辑一致,但两者的入口位置和规则展示方式略有差别,简米云将安全组放在“云服务器ECS”实例列表页的“安全组”页签下,而酷番云则是在“轻量应用服务器”或“云服务器CVM”的“防火墙”或“安全组”菜单中,轻量应用服务器通常叫“防火墙”,CVM叫“安全组”,功能上等价。
如果你用的是简米云服务器还是酷番云服务器,在配置MySQL等数据库端口时,尽量不要把3306端口对所有人(0.0.0.0/0)开放。只放行你的办公电脑固定IP,或者跳板机内网IP,否则数据库容易沦为攻击目标。
数据库与远程管理端口默认值汇总
数据库服务是服务器配置的核心环节,不同数据库监听不同的TCP端口,这些端口直接决定了你的后端应用能否连上数据库,下面这张表是运维人员最经常查的默认端口信息。
| 数据库类型 | 默认端口 | 常见应用场景 |
|---|---|---|
| MySQL | 3306 | LNMP/LAMP环境中的关系型数据库 |
| PostgreSQL | 5432 | 复杂查询与数据分析场景 |
| Redis | 6379 | 缓存、会话保持、消息队列 |
| MongoDB | 27017 | 文档型非关系数据库 |
| SQL Server | 1433 | Windows平台企业级数据库 |
MySQL 3306端口别直接暴露在公网
默认情况下,MySQL监听在3306端口,如果你的服务器上同时跑着网站应用和MySQL,正确的做法是把MySQL的bind-address设置为127.0.0.1,让应用通过本地连接访问,只在应用服务器和数据库服务器分离的架构下,才设置内网网段监听。不要把3306端口映射到公网,这是很多初学者最容易踩的坑。
Redis 6379端口的安全隐患
Redis默认端口是6379,本身没有复杂认证机制,近年来因为配置不当导致Redis被入侵挖矿的事件非常常见,如果你一定要通过外网访问Redis,至少要做到两点:第一,给Redis设置强密码(requirepass);第二,把6379端口的公网访问权限收紧到自己的固定IP,否则,建议干脆关掉外网访问,用内网通信。
服务器端口不通排查步骤
你配置好安全组,也确认进程在监听,可客户端就是连不上,这时不要急,按下面的顺序一步步排查,总有一招能命中。
查看端口是否在监听
登录服务器,执行下面两个命令之一:
netstat -tlnp
或者用更快更直观的ss命令:
ss -tlnp
输出列表中会显示协议、本机地址、端口和进程PID/名称,如果找不到你要的端口,说明服务没启动,或者监听地址错了,例如Nginx应该监听0.0.0.0:80,如果只监听127.0.0.1:80,外网就无法直接访问。
测试本地到公网的连通性
在本地电脑上,打开命令行工具,Windows下用telnet:
telnet 你的服务器公网IP 80
macOS或Linux下可以直接用nc:
nc -vz 你的服务器公网IP 80
如果提示Connected,说明链路整体是通的,如果卡住不动或提示Connection refused,说明数据包没到达服务器,此时优先检查云控制台安全组入方向规则,再看服务器内网防火墙。
安全组、iptables和firewalld的联动关系
云平台安全组 → 服务器内网iptables → 应用进程监听,这三个环节一层套一层,任何一环拒绝,端口就不可达。
-
检查firewalld是否放行该端口:
firewall-cmd --list-all
-
检查iptables规则是否放行:
iptables -L -n
常见的配置误区是只添加了安全组规则,却忘记服务器内部还开着firewalld,在不影响安全的前提下,你可以先用下面的命令临时放行看效果:
firewall-cmd --add-port=8000/tcp --permanent firewall-cmd --reload
端口被占用怎么办
有时候你想启动新服务,却提示端口已被占用,这时先用ss命令找到占用进程,再决定杀掉还是换端口,例如占用80端口的进程是nginx,你不想停掉它,就可以让新服务监听8080或者用反向代理转发。
服务器配置端口常见问题与解答
改完端口号后,为什么网站还是能访问旧端口?
可能是因为旧的监听进程没有完全退出,修改配置后,必须重启服务进程,例如Nginx执行nginx -s reload,或者用systemctl重启指定的服务单元,浏览器和CDN节点可能缓存了旧端口连接,换无痕窗口测试更准确。
如何区分安全组端口和服务器防火墙端口?
安全组是云平台网络层过滤,位于虚拟机外部;服务器防火墙(iptables/firewalld)位于操作系统内部,两者的放行条件是“且”关系,一个拒绝则整体拒绝,多数情况下,你需要在安全组和系统防火墙两处都放行相同端口。
没有公网IP的服务器,外网访问端口该配置什么?
如果服务器在NAT网关后面,或只有内网IP,就不能直接暴露端口,你需要通过端口映射或反向代理(比如frp、nginx stream模块)把内网服务转发到有公网IP的机器上,配置时注意代理服务器监听公网端口,后端指向内网机器IP和原始端口即可。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/795720.html


