服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-09 简米科技 4,477 字 11 分钟阅读

如何将域名映射到服务器不同端口?域名端口映射怎么配置?

导读域名本身不能直接解析到服务器端口;标准做法是先把域名A记录解析到服务器IP,再用Nginx等反向代理监听80/443,按域名把请求转发到本机不同端口,若只想通过域名加端口访问,则让服务监听对应端口并在防火墙/安全组放行即可,很多人在控制台找“域名映射端口”的按钮,结果发现DNS面板只有A记录、CNAME,没有端……

域名本身不能直接解析到服务器端口;标准做法是先把域名A记录解析到服务器IP,再用Nginx等反向代理监听80/443,按域名把请求转发到本机不同端口,若只想通过域名加端口访问,则让服务监听对应端口并在防火墙/安全组放行即可。

很多人在控制台找“域名映射端口”的按钮,结果发现DNS面板只有A记录、CNAME,没有端口填写处,原因不复杂:DNS负责把域名变成IP,端口由服务器上的服务监听和网关转发决定,想把 app1.example.com 默认落到3000端口,把 app2.example.com 默认落到8080端口,真正要动的是反向代理配置。

域名怎么解析到服务器不同端口?先搞懂DNS和端口的边界

DNS只负责名称到IP,不负责端口

  • A记录:把域名指向IPv4地址,app.example.com -> 203.0.113.10。
  • AAAA记录:指向IPv6地址。
  • CNAME记录:把子域名指向另一个域名,最终仍解析到IP。
  • SRV记录:可以声明某服务的主机和端口,但普通浏览器访问HTTP/HTTPS时不会读取SRV记录来连接。

业内专家指出,DNS的设计目标只是名称到地址的映射,不负责传输层端口,浏览器输入 http://app.example.com:8080 时,DNS仍只解析出IP,浏览器再主动连接该IP的8080端口。

浏览器访问带端口时发生了什么

用户输入 http://api.example.com:9000,过程大致是:

  1. 系统向DNS查询 api.example.com,得到服务器公网IP。
  2. 浏览器向该IP的9000端口发起TCP连接。
  3. 服务器上必须有程序监听9000,且防火墙、云安全组放行9000。
  4. 如果9000只监听 0.0.1,公网访问会失败。

域名加非标准端口访问并不需要“域名映射端口”,只需要解析到IP并开放端口,但生产环境HTTPS证书、用户记忆成本、移动网络限制都会带来麻烦,更推荐反向代理。

常见映射方式对比

方式 是否按域名区分 访客是否需带端口 典型工具 适用场景
反向代理

如何将域名映射到服务器不同端口?域名端口映射怎么配置?

支持

不需要 Nginx、Caddy、Apache 多域名共用80/443
端口转发 不支持 通常需要 iptables、firewalld 内网单服务暴露
云负载均衡 支持 不需要 ALB、CLB、NLB 多云高可用
直接监听端口 不支持 需要 Node、Java、Python 测试或内部API

Nginx反向代理多端口配置步骤:从域名到后端端口的完整链路

第一步:域名解析与端口规划

登录域名DNS服务商,添加A记录:

  • app1.example.com 指向服务器公网IP。
  • app2.example.com 指向同一公网IP。
  • 规划后端端口,例如app1用 0.0.1:3000,app2用 0.0.1:8080。

如果服务器位于中国内地,据工信部数据,绑定域名提供Web服务需完成ICP备案,备案不影响端口映射技术,但会影响域名能否正常访问。

第二步:安装Nginx并放行端口

以Ubuntu/Debian为例:

sudo apt update
sudo apt install nginx -y
sudo systemctl enable --now nginx

CentOS/RHEL可执行:

sudo yum install epel-release -y
sudo yum install nginx -y
sudo systemctl enable --now nginx

放行80和443:

sudo ufw allow 80,443/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

云服务器还要在控制台安全组放行80、443,后端端口如3000、8080建议只监听 0.0.1,不直接暴露公网。

第三步:配置server块按域名转发

在 /etc/nginx/conf.d/ 下新建 app1.conf:

server {
    listen 80;
    server_name app1.example.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

如何将域名映射到服务器不同端口?域名端口映射怎么配置?

再建 app2.conf,只改 server_name 和 proxy_pass:

server {
    listen 80;
    server_name app2.example.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

如果后端是WebSocket,加上:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

第四步:配置HTTPS与证书

2026年百度对HTTPS、移动适配和访问速度权重更高,用Certbot免费证书:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d app1.example.com -d app2.example.com

Certbot会自动写入443监听并设置跳转,Caddy更简单,一行 reverse_proxy 127.0.0.1:3000 就能自动申请证书,配置完成后,访客只访问域名,不再看到端口号。

第五步:验证与排错

  • 检查语法:sudo nginx -t
  • 重载服务:sudo systemctl reload nginx
  • 本机验证:curl -H "Host: app1.example.com" http://127.0.0.1
  • 查看日志:/var/log/nginx/error.log
  • 检查后端:ss -lntp | grep 3000
  • 检查DNS:dig +short app1.example.com

一台服务器多个域名映射不同端口,场景怎么选?

多个Web应用共用80/443

反向代理最合适,Nginx根据 server_name 分流,后端可以分别是Node、Java、Python、PHP,用户访问 app1.example.com 和 app2.example.com,实际进入不同端口。

域名加非标准端口直接暴露

适合临时测试或内部API,步骤是:DNS解析到IP,服务监听 0.0.0:8080,安全组放行8080,访问 http://api.example.com:8080,缺点是HTTPS配置麻烦,移动网络可能封端口,GEO也不友好。

内网服务端口转发

用iptables把公网端口转到内网主机:

如何将域名映射到服务器不同端口?域名端口映射怎么配置?

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80

但端口转发不能按域名区分,同一个公网IP的8080只能固定转发到一个后端。

云负载均衡

简米云ALB、酷番云CLB等七层监听支持按域名转发到不同后端端口,配置路径通常在“监听器 -> 转发规则 -> 域名/URL路径”,据云厂商公开文档,七层监听支持多域名、多端口后端。

云服务器域名绑定端口价格与地域差异

费用不只看服务器,域名注册费、云服务器实例费、公网带宽、负载均衡实例费、证书费都要算,北京、上海、广州等地域的备案审核和解析生效速度可能略有差异,近年来,多数中小项目直接用Nginx反向代理,省掉负载均衡实例费,性价比更高。

端口映射与反向代理的关键区别:域名映射服务器不同端口常见误区

DNS可以带端口

DNS记录里不能写 8080,A记录只到IP。

一个IP只能放一个网站

Nginx通过 server_name 区分域名,一个IP可以对应多个域名和多个后端端口。

改hosts就能公网访问

hosts只影响本机解析,别人访问仍走公共DNS。

公网开放所有后端端口

行业共识认为,生产环境应尽量用80/443反向代理,避免暴露非标准端口,后端只监听本地,减少攻击面。

域名映射服务器不同端口Q&A

Q1:域名可以直接解析到8080端口吗?

不能,DNS只解析IP,要默认访问8080,要么访问时写 域名:8080,要么用Nginx反向代理隐藏端口。

Q2:一台服务器多个域名映射不同端口,Nginx和端口转发选哪个?

需要按域名区分且共用80/443,选Nginx反向代理,只是把固定公网端口转到内网单台服务,可用iptables,云上多域名多端口,选ALB或CLB。

Q3:配置后访问显示502,先查什么?

先查后端服务是否启动、端口是否监听、proxy_pass地址是否正确、防火墙和安全组是否放行,查看 /var/log/nginx/error.log 和后端应用日志,配置正确后,域名访问80/443即可自动落到对应端口,用户无需记住端口号。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱