域名解析怎么设?看完这篇,5 分钟搞定
DNS解析真相:端口不是DNS管的 大多数人第一次配置域名时都会犯一个关键错误:以为DNS能设置端口。实际上,DNS只负责将域名转换为IP地址(A记录),完全不涉及端口信息。浏览器访问的端口由其自身决定(HTTP默认80,HTTPS默认443)。 要让非标准端口(如8080)的服务通过域名访问,必须: 正确设置A记录指向服务器IP 配置防火墙和云安全组放行端口 使用Nginx反向代理将80端口请求
你是不是也这么想的
“我的服务跑在服务器的 8080 端口,我想用
api.example.com访问,那我在 DNS 里把端口设成 8080 不就行了?”
不行。DNS 里根本没有端口这个字段。
这是 90% 的人第一次配域名时踩的坑。
这篇文章把域名解析这件事一次讲透。
DNS 到底在干什么
一句话:
DNS 只做一件事:把域名变成 IP 地址。
api.example.com → 你的服务器公网IP
没了。就这么简单。
| 你以为的 | 实际情况 |
|---|---|
api.example.com:8080 → 服务器IP:8080 |
❌ DNS 不管端口 |
api.example.com → 服务器IP |
✅ 这才是 DNS 做的事 |
端口是浏览器决定的,不是 DNS 决定的。
| 你在浏览器输入 | 浏览器实际去连 |
|---|---|
http://api.example.com |
服务器IP:80(HTTP 默认 80) |
https://api.example.com |
服务器IP:443(HTTPS 默认 443) |
http://api.example.com:8080 |
服务器IP:8080(你手动指定) |
所以问题的本质不是"怎么把域名解析到 8080 端口",而是:
我的服务在 8080,但浏览器默认访问 80,怎么办?
答案:让 80 端口有人接,再转发到 8080。 这个"接住并转发"的角色,由 nginx 或反向代理来干。
域名解析到底怎么设
第一步:加 A 记录(最常用)
去你的域名管理后台(阿里云 / 腾讯云 / Cloudflare / Namesilo 都行),找到 DNS 解析页面,加一条:
| 字段 | 填写内容 | 说明 |
|---|---|---|
| 记录类型 | A |
把域名指向 IPv4 地址 |
| 主机记录 | @ 或 www 或 api |
@ = 根域名,www = www子域名,api = api子域名 |
| 记录值 | 你服务器的公网IP |
去服务器控制台查看 |
| TTL | 默认即可(一般 600) | 缓存时间,不用改 |
保存,等几分钟生效。
就这么简单。没有端口,不需要端口。
第二步:验证解析是否生效
# Windows
nslookup api.example.com
# Mac / Linux
dig api.example.com
# 或者直接
ping api.example.com
看到返回你的服务器 IP 就对了 ✅
其他常见记录类型(知道就行)
| 记录类型 | 用途 | 举例 |
|---|---|---|
| A | 域名 → IPv4 | api.example.com → 服务器IP ✅ 最常用 |
| AAAA | 域名 → IPv6 | api.example.com → IPv6地址 |
| CNAME | 域名 → 另一个域名 | cdn.example.com → cdn.cloudflare.com |
| MX | 邮件服务器 | example.com → mail.example.com |
| TXT | 验证/防垃圾邮件 | SPF、DKIM 验证用 |
| NS | 指定 DNS 服务器 | 一般不用动,默认用域名商的 |
90% 的场景,你只需要 A 记录。
解析完了为什么还是访问不了?
这是最常见的问题。解析成功 ≠ 能访问。
按这个顺序排查:
1. 防火墙没开
# Ubuntu
sudo ufw allow 80
sudo ufw allow 443
# CentOS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
2. 云服务器安全组没开(最容易忘)
去阿里云 / 腾讯云控制台:
安全组 → 入站规则 → 添加规则
| 协议 | 端口范围 | 来源 |
|---|---|---|
| TCP | 80 | 0.0.0.0/0 |
| TCP | 443 | 0.0.0.0/0 |
这个不开,外面永远访问不了,跟 DNS 没关系。
3. 服务没在 80/443 端口跑
你的服务在 8080,浏览器访问的是 80 → 连不上。
解决:nginx 反向代理,把 80 转到 8080:
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
一张图看懂整个流程
浏览器输入 http://api.example.com/xxx
│
▼
DNS 解析
│
▼
api.example.com → 服务器公网IP(只到IP,没有端口)
│
▼
浏览器连接 服务器IP:80(HTTP默认80)
│
▼
Nginx 监听 80 端口,接住请求
│
▼
反向代理到 127.0.0.1:8080
│
▼
你的服务返回结果
│
▼
响应原路返回给浏览器 ✅
常见误区速查表
| 误区 | 真相 |
|---|---|
| “DNS 里可以设端口” | ❌ DNS 记录里没有端口字段 |
| “加了 A 记录就能访问了” | ❌ 还得开防火墙 + 安全组 + 服务在 80/443 跑 |
| “解析生效要 24 小时” | ❌ 一般几分钟到几小时,TTL 决定 |
| “CNAME 比 A 记录好” | ❌ 各有用途,指向 IP 用 A,指向域名用 CNAME |
| “我改了解析怎么还是旧 IP” | 清空本地 DNS 缓存:ipconfig /flushdns(Windows)或 sudo dscacheutil -flushcache(Mac) |
最后一句话
域名解析只干一件事:域名 → IP。
端口的事,DNS 不管,浏览器管。
解析完访问不了,先查防火墙和安全组,99% 是这俩的问题。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)