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
  • 核心价值:内网服务跳板、安全暴露、统一入口、保留真实客户端信息
相关推荐
刘~浪地球2 小时前
API 安全设计最佳实践
运维·网络·安全
网络安全许木2 小时前
自学渗透测试第20天(防火墙基础与规则配置)
运维·服务器·网络·网络安全·渗透测试
亚空间仓鼠2 小时前
Docker 容器技术入门与实践 (二):Dockerfile文件
运维·docker·容器
遇见火星2 小时前
linux设置开启启动服务
linux·运维·服务器·nginx
亚空间仓鼠2 小时前
Docker 容器技术入门与实践 (一):命令与镜像、容器管理
运维·docker·容器
.柒宇.2 小时前
Python 运维实战:psutil 监控系统资源 + paramiko 远程管理服务器
运维·服务器·python
东北甜妹3 小时前
Docker 多阶段构建
运维·docker·容器
Zhu7583 小时前
【软件部署】docker环境部署nagios
运维·docker·容器
火车叼位3 小时前
告别资源管理器卡顿:Windows 高效复制万级小文件的正确姿势
运维