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
  • 核心价值:内网服务跳板、安全暴露、统一入口、保留真实客户端信息
相关推荐
SelectDB17 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
ping某4 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智6 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_6 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化