DNS、端口、安全组与反向代理

DNS、端口、安全组与反向代理
可爱可倾DNS、端口、安全组与反向代理
1. DNS:只负责“域名 → IP 的映射”
DNS(域名解析)只做一件事:
xx.example.com → 服务器公网 IP
它不涉及端口、不涉及防火墙、不涉及安全策略。 你只是告诉全球的 DNS 服务器:
“访问这个域名,请去找这台服务器。”
2. 端口:服务监听的位置
服务器上的每一个服务,都需要监听一个端口,例如:
| 服务 | 默认端口 | 是否需对外开放? |
|---|---|---|
| HTTP | 80 | ✔ 通常开放 |
| HTTPS | 443 | ✔ 通常开放 |
| xx 后端 | 1234 | ❌ 不需要开放 |
如果你的 xx 运行在:127.0.0.1:1234,那么它只允许
本机访问。
外网无论如何都无法访问这个端口,即使安全组放行了 1234 端口。
如果你的 xx 运行在:0.0.0.0:1234,那么它允许
所有 IP 访问。
但是,是否能从外网访问,还要看安全组中是否放行了 1234 端口。
3. 安全组:决定外网能否访问某个端口
安全组是云厂商提供的入口防火墙,决定哪些端口可以从外网访问。例如:
| 端口 | 安全组放行? | 外网能访问吗? |
|---|---|---|
| 80 | ✔ | 能 |
| 443 | ✔ | 能 |
| 1234 | ❌ | 不能 |
只要你的安全组没有放行 1234,即便服务监听了 0.0.0.0:1234,外网仍然无法访问。
4. 反向代理(Nginx):把外网请求转发给内部服务
反代负责将 80/443 的访问转发到内部端口,如:
https://xx.example.com
↓
Nginx(监听 80/443)
↓
127.0.0.1:1234(xx 后端)
反向代理的意义是:
- 外网用户只需要访问域名(80/443)
- 内部服务可以隐藏在任意端口
- 后端端口无需暴露给外网(更安全)
这就是为什么后端端口不用开放。
5. 常见问题
Q: 配置了反代后,我需要在云服务器后台开启 1234 端口吗?
A: 完全不需要。 因为流量是先到达
Nginx (443端口),然后由 Nginx 在服务器内部通过
localhost 转发给
1234。外部防火墙根本看不到这个内部转发过程,所以 1234
端口应当保持关闭状态。
Q: 如何检测我的服务是否只监听在本地以及是否开启?
A: 使用 netstat 或
ss 命令查看端口监听状态:
# 使用 netstat
sudo netstat -ltn | grep 1234
# 使用 ss
sudo ss -ltn | grep 1234
# 正确的状态 (只允许本地)
tcp 0 0 127.0.0.1:1234 0.0.0.0:* LISTEN
# 危险的状态 (允许所有 IP)
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN
6. 总结
一张简单的关系图
┌──────────────────────────────┐
│ 用户访问域名 │
└───────────────┬──────────────┘
↓
DNS:解析域名 → 服务器 IP
↓
┌───────────────┴──────────────┐
│ Nginx(监听 80 / 443) │
│ 负责接收外网请求并做反向代理 │
└───────────────┬──────────────┘
↓
内部服务(如 127.0.0.1:1234)
如果你使用 Nginx 为 xx 或其他后端程序做反代:
- ✔ 必须开放的端口:80 / 443
- ❌ 不需要开放的端口:1234 等内部端口
- ✔ 内部服务保持监听 127.0.0.1 或 0.0.0.0 即可
- ✔ 只要做了反代,后端端口就不需要开放!
用一句话总结:
DNS 负责找服务器,安全组控制外网访问权限,端口决定服务位置,反代负责把外部请求转发到内部服务。因此,反代后的后端端口无需对外开放。
评论
匿名评论隐私政策
TwikooGiscus
✅ 若未加载出评论区,请刷新页面~





