Nginx 反向代理配置,核心作用是:把访问当前服务器 8888 端口的 /service/ 接口请求,转发到内网另一台后端服务器上,常用来做后端接口跳板、内网服务暴露、请求转发,非常适合企业内部服务、共享平台的接口代理场景。
以下ip都是非真实数据。
powershell
server {
listen 8888;
server_name 198.158.189.1;
# 共享平台接口转发(后端跳板用)
location /service/ {
proxy_pass http://10.110.11.6:8888/service/;
proxy_set_header Host 10.110.11.6:8888;
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;
}
}
一、整体作用一句话概括
当前 Nginx 服务器(198.158.189.1)监听 8888 端口,所有访问 http://198.158.189.1:8888/service/xxx 的请求,都会被自动转发到服务器 10.110.11.6:8888/service/xxx,同时保留真实客户端信息,实现后端接口跳板功能。
二、逐行超详细解析
1. server { ... }
- Nginx 核心配置块,代表一个独立的虚拟主机站点
- 一个 Nginx 可以写多个
server块,对应多个站点/端口代理
2. listen 8888;
- 监听端口 :Nginx 会在当前服务器上开启 8888 端口
- 外部/内部请求必须访问
IP:8888才能匹配到这个配置 - 示例:
http://198.158.189.1:8888
3. server_name 内网服务器ip;
- 站点域名/IP 标识 :这个虚拟主机只匹配请求地址为
内网ip的请求 - 可以写域名(如
api.xxx.com),这里直接用内网 IP,更直观 - 如果不匹配这个 IP/域名,不会进入当前
server配置
4. # 共享平台接口转发(后端跳板用)
- 纯注释,说明配置用途:给共享平台做后端接口跳板,转发请求
- 实际运行时 Nginx 会忽略这行
5. location /service/ { ... }
- 请求路径匹配规则 :只有访问路径以
/service/开头的请求,才会进入这个转发规则 - 匹配示例:
- ✅
/service/user - ✅
/service/order/list - ❌
/api/login(不匹配,不转发)
- ✅
- 末尾
/很重要:严格匹配以/service/开头的路径
6. proxy_pass http://10.110.11.6:8888/service/;
✅ 核心转发指令(最重要)
-
把匹配到的请求,转发到目标地址
-
目标:内网服务器
10.110.11.6的 8888端口 -
路径拼接规则:
客户端请求:http://服务器ip:8888/service/getInfo 实际转发:http://10.110.11.6:8888/service/getInfo -
这就是后端跳板的本质:用户不直接访问内网服务器,通过 Nginx 中转
7. proxy_set_header Host 10.110.11.6:8888;
- 转发时修改请求头中的 Host 字段
- 告诉目标后端服务器:"这个请求是发给你
10.110.11.6:8888的" - 很多后端接口会校验 Host,不设置会导致 404/拒绝访问
8. proxy_set_header X-Real-IP $remote_addr;
- 传递真实客户端 IP 给后端服务器
$remote_addr是 Nginx 内置变量,代表发起请求的客户端真实 IP- 后端日志里能看到真正的用户 IP,而不是 Nginx 服务器的 IP
9. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- 多级代理场景下的完整 IP 链路
$proxy_add_x_forwarded_for= 客户端IP + 所有代理层IP- 后端可以追踪请求经过了哪些代理,排查问题更方便
10. proxy_set_header X-Forwarded-Proto $scheme;
- 传递请求协议(http / https)
$scheme是 Nginx 变量,自动获取当前请求协议- 后端可以根据协议生成正确的回调地址、跳转链接
三、这个配置的典型使用场景
- 内网服务安全暴露
后端服务 是内网服务器,不允许直接外网访问,通过 Nginx 做跳板安全暴露接口。 - 共享平台统一入口
多个后端服务,统一通过一台 Nginx 入口转发,方便管理、日志、限流、鉴权。 - 接口代理/请求中转
前端/其他系统只需要访问一个地址,Nginx 负责转发到对应后端,解耦服务。
四、请求流程图解
客户端
↓
访问:http://198.158.189.1:8888/service/xxx
↓
Nginx 匹配 listen 8888 + server_name + /service/
↓
Nginx 转发请求到:http://10.110.11.6:8888/service/xxx
↓
后端服务器处理请求,返回结果
↓
Nginx 把结果返回给客户端
五、关键注意事项(运维/开发必备)
- 防火墙必须开放 8888 端口
Nginx 服务器要放行 8888 端口,否则请求进不来 - 内网互通
Nginx 服务器(198.158.189.1)必须能访问目标服务器(10.110.11.6:8888) - 路径
/不能乱删
location /service/和proxy_pass末尾的/保持一致,避免路径错乱 - Header 必须完整
这 4 个proxy_set_header是生产环境标准配置,缺一不可
生产环境中最常用、最标准的内网接口反向代理模板:
- 监听端口:8888
- 匹配 IP:198.158.189.1
- 匹配路径:/service/
- 转发目标:10.110.11.6:8888
- 核心价值:内网服务跳板、安全暴露、统一入口、保留真实客户端信息