Web服务器到底要开放哪些端口?答案很简单:绝大多数Web应用只需要对外网开放80(HTTP)和443(HTTPS)这两个端口,其余端口应尽量关闭。但真实的生产环境远比这复杂,今天咱们就从实际运维场景出发,掰开揉碎聊聊端口这件事。
为什么80和443端口是Web服务器的命根子
80端口承载HTTP明文流量,用来处理不带加密的网页请求,当用户在浏览器输入http://开头网址时,请求会精准地落到服务器的80端口。443端口承载HTTPS加密流量,是现在的主流,行业共识认为,搜索引擎更偏爱HTTPS站点,所以把443开好是上线前的必备动作。
有意思的是,你不需要同时开放这两个端口给公网,最稳妥的做法是:公网只放行443,用80端口做301跳转,把用户都导到HTTPS上来,这样既能保证老旧链接能访问,又能统一加密,还能减少暴露面。
web服务器一般会开放什么端口:完整清单看这里
单纯指望80和443,很多站点根本跑不起来,因为Web服务器身后还站着数据库、缓存、管理面板等一堆小伙伴,以下是让我头疼了多年、总结出的端口全景图:
| 端口号 | 服务角色 | 是否建议对外网开放 |
|---|---|---|
| 80/443 | Nginx/Apache/IIS | 是(443必开) |
| 21/22 | FTP/SSH管理 | 22看情况,21关闭 |
| 3306 | MySQL数据库 | 否(仅内网) |
| 6379 | Redis缓存 | 否(仅内网) |
| 8888 | 宝塔面板(常见端口) | 强烈建议改掉 |
| 9200 | Elasticsearch | 否(仅内网) |
| 8080/888 | 常见备用HTTP端口 | 视运维策略而定 |
数据库和缓存端口:内网专用,谁开谁后悔
很多刚入行的朋友喜欢把3306端口直接暴露到公网,方便自己用Navicat远程连数据库,这几乎等同于把家门钥匙挂在门口,业内专家指出,近年大量数据库勒索事件都源于这种配置,正确姿势是用SSH隧道,或者只允许内网IP访问。

同理,Redis的6379端口如果裸奔在外网,权限没配置好的话,攻击者可以直接写crond提权,这是服务器被入侵最常见的路径之一,切记,这类中间件端口绑定0.0.1或内网IP,不要监听0.0.0。
管理类端口:能不暴露就别暴露
22端口(SSH)建议更改默认端口(比如设成高位的11022),同时开启密钥登录、关闭密码登录。8888端口是宝塔面板默认开的,很多人懒得改,结果被扫出来爆破,这是本地运维事故的重灾区,如果你买了云服务器,在安全组里也要同步把相应端口放行,两边配置缺一不可。
按实际场景来定:建站类型决定端口策略
给客户做网站时,我习惯先问清楚跑什么应用,因为不同技术栈对端口的需求差异很大。
纯静态网站或简单博客
如果用了CDN(内容分发网络)加速,回源服务器只需要开80和443,云厂商全站加速场景下,源站甚至可以只允许CDN的IP段访问,其他全拦,这种架构下,攻击者连你源站的真实IP都很难摸到。
WordPress或PHP动态站
这套组合拳一般涉及MySQL的3306端口和Nginx,比较好的做法是数据库跟Web分离,数据库走内网,或者买云厂商的RDS(云数据库)产品,直接省掉自己维护端口的麻烦。
Node.js或Java应用
前端服务器Nginx监听80/443,然后反向代理到应用服务器的3000端口或8080端口,这里有个细节容易踩坑:Nginx转发给Tomcat时,通常用proxy_pass http://127.0.0.1:8080,如果用户提交了Host头,你要在配置里显式带上,否则会出现页面能开但登录跳转异常的问题。
安全加固实操:如何检查开放端口的风险
开放端口不是嘴上说说,得动手查清楚,下面是我出差去机房必敲的几条命令,你可以直接复制收藏。

第一步:查看本机正在监听的端口
ss -tlnp
这句命令能列出所有TCP监听端口对应的进程名,看到:3306或0.0.0:22这类绑定,说明对所有外网IP开放了,需要警觉。
第二步:配合防火墙只放行指定端口
使用firewalld的话,主意顺序很重要,先清除默认规则,再批量添加白名单:
# 清空防火墙规则,记得先确认自己没被锁在服务器外面 firewall-cmd --permanent --zone=public --remove-port=1-65535/tcp # 放行常用端口 firewall-cmd --permanent --zone=public --add-port=80/tcp firewall-cmd --permanent --zone=public --add-port=443/tcp # 重载配置使规则生效 firewall-cmd --reload
在乌班图(Ubuntu)上是UFW体系,命令风格不同但逻辑一样:
sudo ufw allow 80/tcp sudo ufw allow from 你的内网IP段 to any port 3306
第三步:用在线扫描工具验证
本地查完之后,别忘了用第三方视角看一遍,像站长工具或简米云控制台的“端口检测”功能,每年都能帮我抓到不少漏网之鱼,如果扫描结果里出现8888或3389这种默认端口,建议立刻去安全组和防火墙里权限收敛。
常见端口冲突与连接数瓶颈排查经验
服务器端口开好之后,不是一劳永逸的,最近半年我遇到了三次突发事故,根子都出在端口占用或连接数打满上。
现象1:Nginx启动报address already in use,多半是队列里有进程还在占用80端口,先执行fuser -k 80/tcp杀掉,再重启Nginx。
现象2:网站能访问,但图片一直加载不出来,看到Too many open files,这是文件描述符限了,跟TIME_WAIT状态的连接数太多有关,你去看看/etc/nginx/nginx.conf里的worker_connections数值,以及内核参数net.ipv4.tcp_tw_reuse是否开启,写死后执行

sysctl -p生效。
现象3:用了HTTPS后访问变慢,排查网络层之前,先检查443端口的TLS握手延迟,有的配置里ssl_protocols还带着老旧协议,这会浪费大量握手时间。
网站服务器端口配置方法总结与避坑提醒
按上面的思路,其实多数站点只需处理好三条链路:Web端口、管理端口、数据库端口,不少企业站只开放基础FTP与SSH,同样能稳定运行很久,但如果你走的是商城或小程序后端,那就得再评估数据同步端口要开放哪些,比如内网专用的3306和6379。
最后一个经验之谈:用云厂商的安全组时,入库方向入站只开443和自定义SSH端口,出方向规则默认全放没问题,但入站规则一定要“按最小化原则”白名单化,开放端口这事,开得起容易,但想关得住就得看习惯好不好了。
问答环节:web服务器端口开放常见问题集锦
云服务器买了之后,默认会开放哪些端口?
多数云服务商(简米云、酷番云等)的新购实例默认只放行22(SSH)、80、443和3389(Windows远程桌面),其他端口需要你登录控制台在“安全组”规则中手动添加。
服务器防火墙端口怎么开放才能既稳定又安全?
优先使用云平台自带的“安全组”做第一道拦截,再配合系统防火墙(firewalld或UFW)做第二层防护,放行端口时,尽量把源IP限制为指定地址或网段,不写0.0.0/0,改动防火墙前备份当前规则,避免断开连接后彻底失联,这在跨地域运维时尤其重要。
为什么我前后换了几个端口,Web服务器还是访问不了?
这类问题很大概率卡在安全组和系统防火墙的“双重校验”上,安全组放行了,系统内没放行,依然不通,反之亦然,建议先跑curl -I 127.0.0.1确认本机服务通了,再把安全组入站规则源地址改成你的本地IP/32,一条一条验证从外网访问的连通性。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/802870.html

