当前位置: 首页 > news >正文

Nginx 作为反向代理时设置的请求头

这三个参数是 Nginx 作为反向代理时设置的请求头,目的是把真实的客户端信息传递给后端应用(Tomcat、Spring Boot、Node.js 等)。

		location /api {proxy_pass  http://172.28.3.106:8094;proxy_redirect              http:// https://;proxy_set_header            Host $host:$server_port;proxy_set_header            X-real-ip $remote_addr;proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;}

proxy_set_header Host $host:$server_port;

  • 含义:把客户端请求时的 Host 头信息 传给后端。
  • $host:请求的域名(可能来自 Host 头,也可能是请求的 IP)。
  • $server_port:Nginx 接收请求时监听的端口号。
  • 作用:后端应用拿到的 Host 头和用户访问的保持一致,避免后端误判。

👉 例子:
用户访问

http://example.com:8080/api/user

Nginx 转发时会带上:

Host: example.com:8080

proxy_set_header X-Real-IP $remote_addr;

  • 含义:告诉后端应用,真实客户端的 IP 地址
  • $remote_addr:Nginx 接收到请求时,客户端的源 IP。
  • 作用:让后端知道用户的真实 IP,而不是只看到 Nginx 的 IP。

👉 例子:
如果用户 IP 是 203.0.113.5,那么后端会收到:

X-Real-IP: 203.0.113.5

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  • 含义:传递请求经过的 代理链路中的客户端 IP 列表

  • $proxy_add_x_forwarded_for:会在已有的 X-Forwarded-For 头后面追加 $remote_addr

  • 作用:

    • 如果请求直接来自客户端 → 就是客户端 IP。
    • 如果请求经过多个代理 → 会形成一个 IP 列表,最后一个就是最近的客户端。

👉 例子:
用户 203.0.113.5 → 代理1(Nginx1) → 代理2(Nginx2) → 后端。
后端收到的头可能是:

X-Forwarded-For: 203.0.113.5, 10.0.0.1, 10.0.0.2

(第一个 IP 永远是真实用户的公网 IP)


总结

Header 配置作用典型用途
Host $host:$server_port保留客户端访问的域名和端口后端根据域名/端口做路由或多租户
X-Real-IP $remote_addr传递客户端真实 IP后端日志、风控、限流
X-Forwarded-For $proxy_add_x_forwarded_for传递完整代理链路上的客户端 IP 列表追踪用户来源、防攻击分析

在实际项目里,Spring Boot 里要拿到 真实客户端 IP,通常要优先取:

  1. X-Forwarded-For 的第一个 IP
  2. 如果没有,就取 X-Real-IP
  3. 否则再 fallback 到 request.getRemoteAddr()
http://www.lryc.cn/news/626337.html

相关文章:

  • 深度解析:RESTful API中的404错误 - 不是所有404都是Bug
  • 安路EF2系列芯片单口ram ip核使用方法
  • 记录 docker容器打包成镜像 在其他服务器快速启动镜像和容器
  • 零基础学Java第二十二讲---异常(2)
  • KV cache
  • 在Excel和WPS表格中制作可打印的九九乘法表
  • MySQL事务及原理详解
  • MySQL 数据与表结构导出 Excel 技术文档
  • 如何使用matlab将目录下不同的excel表合并成一个表
  • python中view把矩阵维度降低的时候是什么一个排序顺序
  • 系统架构设计师备考第1天——系统架构概述
  • 深入Linux内核:架构设计与核心功能解析
  • 车联网(V2X)中万物的重新定义---联网汽车新时代
  • 自动驾驶汽车机器学习安全实用解决方案
  • RK android14 Setting一级菜单IR遥控器无法聚焦问题解决方法
  • Building Systems with the ChatGPT API 使用 ChatGPT API 搭建系统(第二章学习笔记及总结)
  • 汽车ECU实现数据安全存储(机密性保护)的一种方案
  • 【openssl】openssl CA.pl 签发证书操作步骤
  • Redis String全方位指南:命令、编码、时间复杂度与应用场景
  • RK-Android11-PackageInstaller安装器自动安装功能实现
  • KubeBlocks AI:AI时代的云原生数据库运维探索
  • 3D文档控件Aspose.3D实用教程:使用 C# 构建 OBJ 到 U3D 转换器
  • Origin将普通点线图升级为3D点线图
  • ETL 工具选型评测:2025 年 Top 5 工具优缺点对比(附评分表)
  • 【自记】Power BI 中FILTER、CALCULATE 和 CALCULATETABLE 三个函数详细说明
  • React框架超详细入门到实战项目演练【前端】【React】
  • React15.x版本 子组件调用父组件的方法,从props中拿的,这个方法里面有个setState,结果调用报错
  • 【Coze】Windows 环境下使用 Docker 部署 Coze Studio 的详细指南
  • 基于分布式环境的令牌桶与漏桶限流算法对比与实践指南
  • Day 40:训练和测试的规范写法