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
  • 核心价值:内网服务跳板、安全暴露、统一入口、保留真实客户端信息
相关推荐
腾讯蓝鲸智云1 天前
【运维自动化-节点管理】节点管理的插件策略如何使用
运维·自动化·云计算·sass·paas
疯狂成瘾者1 天前
服务器的单体和集群
运维·服务器
liuhuizuikeai1 天前
可视化门禁---Linux/Qt+SqLite篇
linux·运维·qt
charlie1145141911 天前
嵌入式Linux驱动开发——新 API 字符设备驱动完整教程 - 从设备结构体到应用测试
linux·运维·驱动开发
飞Link1 天前
2000 亿砸向算力:字节跳动 AI 基建跨越,后端与运维的“万亿 Token”生死战
运维·人工智能
SWAGGY..1 天前
Linux系统编程:(二)基础指令详解
linux·运维·服务器
张文君1 天前
上古世纪服务端编译安装AAEmu docker编译安装
运维·docker·容器
雾岛心情1 天前
小铭邮件管理工具箱的界面(公司版)
运维·服务器·工具·o365·小铭邮件工具箱(公司版)
一只鹿鹿鹿1 天前
数据库运维与管理规范(WORD)
运维·数据库
King's King1 天前
自动化立体仓库系统项目施工要点
运维·自动化