新手配置内网反向代理的核心是用Nginx(或宝塔面板)将外部标准端口(80/443)请求转发至本地非标端口(如3000),隐藏后端真实端口;需补充关键头信息确保IP识别、WebSocket和超时正常,并支持子域名或路径分流多服务。

新手配置内网反向代理隐藏后端端口,核心是让外部访问走标准端口(如 80/443),而真实服务仍运行在本地非标端口(如 3000、8080、9000),不对外暴露。整个过程不依赖公网 IP,只在你自己的服务器或局域网内生效,安全又简洁。
选对工具:用 Nginx 最直接
Nginx 是轻量、稳定、文档全的首选。宝塔面板本质也是封装 Nginx,如果你用宝塔,操作更图形化;如果纯 Linux 服务器,直接编辑配置文件即可。两者底层逻辑一致,推荐新手从宝塔入手,出错可回退,界面提示也明确。
基础配置三步走(以宝塔为例)
假设你有个 Node.js 服务正跑在 http://127.0.0.1:3000,你想通过 https://api.example.com 访问它:
- 在宝塔「网站」中添加新站点,域名填 api.example.com,PHP 版本选「纯静态」
- 进该站点「设置」→「反向代理」→「添加反向代理」,代理名称写“node-api”,目标 URL 填 http://127.0.0.1:3000/(注意末尾斜杠)
- 点「提交」,再点击右上角「重载配置」。此时访问 api.example.com 就能打开你的服务,地址栏不会出现 :3000
关键细节不能漏
默认反向代理可能缺几个重要头信息,导致后端拿不到真实 IP、WebSocket 断连、或重定向跳错。建议在代理设置里点「高级」→「配置文件」,手动补上这几行:
- proxy_set_header Host $host; —— 把原始域名传给后端,避免它生成 127.0.0.1:3000 这样的链接
- proxy_set_header X-Real-IP $remote_addr; 和 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; —— 让后端日志、限流、白名单能识别真实访客 IP
- proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; —— 必加,否则 WebSocket(如聊天、实时通知)会断开
- proxy_read_timeout 300; —— 防止大文件上传或长连接被默认 60 秒超时中断
多服务按路径或子域名分流
一台机器跑多个服务?不用开一堆端口。两种常用方式:
- 按子目录:比如 /admin/ 转到 http://127.0.0.1:8001,/api/ 转到 http://127.0.0.1:9000。在宝塔里分别添加两个反向代理,代理目录填对应路径(都带结尾 /)
- 按子域名:比如 admin.example.com → 8001,api.example.com → 9000。只需新建两个站点,各自绑定不同域名,再分别配反向代理即可
所有后端端口(8001、9000 等)都可以在防火墙里关闭,只留 Nginx 的 80/443 开放,攻击面大幅缩小。

















