nginx反向代理

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 变量,自动获取当前请求协议
  • 后端可以根据协议生成正确的回调地址、跳转链接

三、这个配置的典型使用场景

  1. 内网服务安全暴露
    后端服务 是内网服务器,不允许直接外网访问,通过 Nginx 做跳板安全暴露接口。
  2. 共享平台统一入口
    多个后端服务,统一通过一台 Nginx 入口转发,方便管理、日志、限流、鉴权。
  3. 接口代理/请求中转
    前端/其他系统只需要访问一个地址,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 把结果返回给客户端

五、关键注意事项(运维/开发必备)

  1. 防火墙必须开放 8888 端口
    Nginx 服务器要放行 8888 端口,否则请求进不来
  2. 内网互通
    Nginx 服务器(198.158.189.1)必须能访问目标服务器(10.110.11.6:8888)
  3. 路径 / 不能乱删
    location /service/ 和 proxy_pass 末尾的 / 保持一致,避免路径错乱
  4. Header 必须完整
    这 4 个 proxy_set_header 是生产环境标准配置,缺一不可

生产环境中最常用、最标准的内网接口反向代理模板:

  • 监听端口:8888
  • 匹配 IP:198.158.189.1
  • 匹配路径:/service/
  • 转发目标:10.110.11.6:8888
  • 核心价值:内网服务跳板、安全暴露、统一入口、保留真实客户端信息
相关推荐
HUIBUR科技20 分钟前
多系统整合不必搭建中台:AI中枢带来轻量化数字化集成
大数据·运维·人工智能
凯歌的博客32 分钟前
docker镜像代理
运维·docker·容器
xixiaoyunya39 分钟前
高校教学资料备份:校园内网自动化备份完整方案
运维·自动化
发量惊人的中年网工1 小时前
服务器托管一个机柜一年多少钱?2026年9月最新机柜租用价格参考
运维·服务器·网络
fundoit1 小时前
资源服务器如何对 JWT 进行验签
java·运维·服务器·spring boot·php·oauth2
云贝贝贝1 小时前
【无标题】TDSQL 分片键怎么选?选错等于数据倾斜加跨分片慢查询
运维·服务器·数据库·腾讯云
浪子明X1 小时前
AI 日报自动化:先把事实、时间和引用做成可检查的编辑流水线
运维·人工智能·自动化
hzxpaipai1 小时前
AI把网站页面做出来了,谁来负责后台、服务器和正式上线?
运维·服务器·人工智能
xbzb1 小时前
一边装一边报错:CentOS 7 + LNMP 跑 ECShop 的常见故障与解法
linux·运维·centos
遇印记1 小时前
数据通信初步
运维·服务器·网络·windows·学习