你是不是也这么想的

“我的服务跑在服务器的 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 地址
主机记录 @wwwapi @ = 根域名,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.comIPv6地址
CNAME 域名 → 另一个域名 cdn.example.comcdn.cloudflare.com
MX 邮件服务器 example.commail.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% 是这俩的问题。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐