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
  • 核心价值:内网服务跳板、安全暴露、统一入口、保留真实客户端信息
相关推荐
小张成长计划..4 小时前
【Linux】10:冯·诺依曼体系结构和操作系统
linux·运维·服务器
悦儿遥遥雨17 小时前
PXE + Kickstart 无人值守批量部署系统
linux·javascript·nginx
兔C8 小时前
Linux 命令行入门学习资料 day_2
linux·运维·服务器
枕星而眠9 小时前
【数据结构】红黑树入门指南
运维·数据结构·c++·后端
snow@li11 小时前
深入理解内核与操作系统的关系
运维·服务器·microsoft
大E帝国子民112 小时前
OpenCloudOS Server 9 安装 Nginx 完整指南
前端·网络·nginx
星融元asterfusion12 小时前
高效网卡部署与自动化运维:EasyRoCE Toolkit NC 配置指南
运维·自动化
prettybug12513 小时前
OBS背景音乐_气氛实战指南
运维·服务器
无足鸟ICT13 小时前
【RHCA+】管道符
linux·运维·服务器
老约家的可汗13 小时前
Linux的库制作和原理
linux·运维·服务器