用Nginx 做「反向代理」
传统方法(不想装 Nginx)
若无需隐藏端口号,可省略 Nginx 步骤:
- 将三级域名解析到服务器 IP;
- 访问时直接拼接端口号:
test.你的域名.com:端口号。
该方式可正常访问,但必须手动带端口号,体验略差。
三级域名绑定服务器端口:实现方法详解
你的服务跑在固定端口上,但你不想每次输入网址时都带上端口号该如何解决呢?
可以用三级域名指向你的服务器,但域名本身不能直接“绑定端口”,只能绑定IP。
想实现「访问三级域名 = 自动打到服务器某个端口」,完全能做到,靠的是域名解析 + 反向代理。
以下用最直白、可直接落地的方式说明:
一、核心结论
-
三级域名(如 app.abc.com)只能解析到 IP,不能绑端口
这是 DNS 天生的规则,所有域名都遵循该逻辑。 -
但你可以做到:访问三级域名 = 自动访问指定端口
示例效果:test.yourdomain.com→ 自动访问192.168.1.100:8080api.yourdomain.com→ 自动访问192.168.1.100:3000
二、怎么实现?(最常用、最简单方案)
1)先做域名解析
前往你的域名管理控制台(阿里云/腾讯云/Cloudflare 等),按以下步骤操作:
- 添加 A 记录
- 主机记录填写三级域名前缀:
test - 记录值填写服务器公网 IP
完成后,test.你的域名.com 会直接指向你的服务器 IP。
2)服务器上装 Nginx 做「反向代理」
Nginx 会拦截三级域名的访问请求,并自动转发到你指定的服务器端口。
极简配置示例:
server {
listen 80;
server_name test.你的域名.com;
location / {
proxy_pass http://127.0.0.1:8080; # 替换为你要绑定的实际端口
}
}
配置完成后重启 Nginx,即可实现:
访问三级域名 = 直接访问对应端口(无需在网址后手动加端口号)。
三、一句话总结
- 三级域名不能直接绑定端口(DNS 规则限制);
- 可通过「域名解析 + Nginx 反向代理」实现等价效果;
- Web 服务(网站/接口)优先推荐 Nginx 方案,访问更简洁、体验更好。
Nginx绑定端口显示占用:问题定位与解决方法
端口占用是Nginx配置中最常见的问题
核心问题定位
Nginx提示“端口占用”,大概率是以下2种情况:
- Nginx要监听的端口(如80/443)被其他程序占用(最常见);
- 反向代理的目标端口(如8080)被其他程序占用(少数情况)。
第一步:找到“谁占用了端口”
根据服务器系统选择对应命令,10秒定位占用程序:
Linux系统(CentOS/Ubuntu等)
排查示例(以80端口为例,Nginx默认监听80):
# 方法1:查找80端口占用进程
netstat -tulpn | grep :80
# 方法2(推荐):更简洁的命令
ss -tulpn | grep :80
# 方法3(推荐):更简洁的命令
lsof -i:80
输出示例:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx→ 80端口被PID=1234的nginx旧进程占用tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5678/httpd→ 80端口被Apache占用
Windows系统
以管理员身份打开CMD,排查80端口:
# 第一步:查找80端口占用的PID
netstat -ano | findstr :80
# 示例输出:TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1234
# 第二步:根据PID查询对应程序
tasklist | findstr 1234
第二步:解决端口占用(3种方案,任选其一)
方案1:停掉占用端口的程序(推荐,优先)
Linux系统(示例:80端口被Apache占用)
# 停止Apache服务
systemctl stop httpd
# 禁止Apache开机自启(避免再次占用)
systemctl disable httpd
# 若为旧Nginx进程占用,直接杀死进程(替换为实际PID)
kill -9 1234
Windows系统(示例:80端口被IIS占用)
# 停止IIS服务
iisreset /stop
# 或直接结束占用进程(替换为实际PID)
taskkill /f /pid 1234
方案2:修改Nginx监听端口(不想停其他程序)
若80端口被占,可将Nginx监听端口改为8081(或其他未被占用的端口),修改Nginx配置文件:
server {
listen 8081; # 把默认的80改成8081(任选未占用端口)
server_name test.你的域名.com;
location / {
proxy_pass http://127.0.0.1:你的服务端口; # 目标服务端口无需修改
}
}
修改后访问路径:test.你的域名.com:8081
方案3:修改目标服务端口(若目标端口被占)
- 用第一步的命令找到占用目标端口(如8080)的PID,杀死该进程;
- 将你的服务端口改为其他未占用端口(如8082);
- 修改Nginx配置中的
proxy_pass:proxy_pass http://127.0.0.1:8082; # 对应新的服务端口
第三步:验证问题是否解决
- 重启Nginx:
- Linux:
nginx -t(验证配置) →nginx -s reload(重启) - Windows:在Nginx安装目录执行
nginx -s reload
- Linux:
- 访问三级域名(如
test.你的域名.com),能正常打开目标服务即说明问题解决。
总结
- 核心原因:Nginx监听端口/目标服务端口被Apache/IIS/旧进程等程序占用;
- 最快解决:先用
netstat/ss命令定位占用程序,要么停掉程序,要么修改Nginx监听端口; - 验证关键:重启Nginx后,三级域名能正常访问目标服务即为解决。

浙公网安备 33010602011771号