返回知识库

服务器 · 网络与入口

端口Port

端口是机器上区分服务的门牌号。应用只听 127.0.0.1 时外面进不来;对外只该开 443,应用端口交给 Nginx 转发,数据库端口永不对外。

先让朋友打开你的网站,再看哪些门不该开

下面是服务器的门牌表:每个端口里住着谁、它听哪个地址。先在本机测、再从外网测;改完门牌表要重新测,外网结果会落在每一行和朋友的浏览器上。

任务:让朋友用浏览器打开你的网站,同时只开必要的门。服务器公网 IP 是 203.0.113.10,AI 说应用已在 3000 端口跑起来。

22
SSH 登录你自己管理服务器用;来源应限你的 IP(见安全组)
外网:未测
443
Nginx 正门未启用:没有人守 443
外网:未测
3000
你的应用监听 127.0.0.1(只接本机)
外网:未测
5432
数据库监听 127.0.0.1(只接本机)
外网:未测

测试记录

$ 还没测过

等待外网测试

点「从外网测」看朋友那边会怎样

原因:还没从外网测过。下一步:先点「服务器本机测」,再点「从外网测」,对比两条结果。

知识点:门牌号、听谁、开哪扇

门牌表上已经演过,这里只给命名。

  • 端口是一台机器上区分不同服务的门牌号:SSH 22、网页 80/443、应用常见 3000、数据库 5432。
  • 监听 127.0.0.1 只接本机请求,所以本机 curl 通、外网超时;0.0.0.0 才接外面来的。
  • 对外只开正门 443(和 80 跳转),应用端口交给 Nginx 在机器内部转发,见「反向代理」。
  • 数据库、缓存的端口永远只听本机,不对公网。
  • 门牌表都对了还打不开,就去查两道门:云安全组和机器防火墙,见「安全组与防火墙」。

什么时候用、怎么用

AI 说服务已经启动、你却打不开时,先按这个顺序问。

  • 信号:AI 报告「运行在 localhost:3000」,你在自己电脑或手机上打不开;或报错里出现 EADDRINUSE(端口被占用)、ECONNREFUSED(门后没人)。
  • 先问 AI:应用监听的是哪个地址和端口?在服务器本机 curl 通不通?
  • 本机通、外网不通:查监听地址,再查安全组和防火墙有没有放行。
  • 验收:从外网只能扫到 22 和 443(80);网站用域名 + HTTPS 打开,而不是 IP:3000。
  • 不适用:用 Vercel 这类托管平台时端口由平台管,你只需要关心域名。

正反例:同一句「外网打不开」

目标都是让网站能访问,差别只在开哪扇门。

正例应用只听本机,Nginx 守 443

朋友用 https 域名打开;外网扫描只看到 22 和 443,应用和数据库都藏在机器里。

反例「把所有端口都打开」

网站是能打开了,但 3000 和 5432 一起暴露,数据库开始收到陌生 IP 的登录尝试。

快速自测

AI 报告「服务已在 3000 端口启动,服务器上 curl localhost:3000 返回 200」,但你从家里访问 IP:3000 超时。最先该让 AI 查什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。