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

 更新时间:2026年02月09日 09:53:39   作者:思静鱼  
本文主要介绍了Nginx 作为反向代理时设置的请求头,主要是三个参数在Nginx作为反向代理时的作用,分别是Host、X-Real-IP和X-Forwarded-For,这些参数用于将真实的客户端信息传递给后端应用,以确保后端能够获取到正确的客户端信息,避免误判和安全问题

这三个参数是 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()

到此这篇关于Nginx 作为反向代理时设置的请求头的文章就介绍到这了,更多相关Nginx 反向代理设置的请求头内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nginx实现tomcat动静分离详解

    nginx实现tomcat动静分离详解

    本篇文章主要介绍了nginx实现tomcat动静分离详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Nginx转发404问题的排查和思考

    Nginx转发404问题的排查和思考

    本篇文章原自当前业务遇到的一个实际问题,因为受到所在网络环境的因素影响,所以整体排查下来耗费了很大精力,记录一下Nginx 转发 404 问题的排查和思考,需要的朋友可以参考下
    2023-09-09
  • Nginx的信号控制

    Nginx的信号控制

    今天小编就为大家分享一篇关于Nginx的信号控制,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • nginx的安装以及简单配置教程

    nginx的安装以及简单配置教程

    这篇文章主要给大家介绍了关于nginx的安装以及简单配置的相关资料,以下是nginx在各种环境条件下的安装与配置过程,其中还分析了中间遇到的坑以及处理方式,需要的朋友可以参考下
    2023-08-08
  • Nginx/Openresty中启用http2支持的方法教程

    Nginx/Openresty中启用http2支持的方法教程

    Openresty/Nginx默认是不支持http2的,需要将http2模块编译进应用中。这篇文章主要给大家介绍了关于在Nginx/Openresty中启用http2支持的方法教程,文中介绍的非常详细,对大家具有一的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Nginx配置WebSocket的详细教程

    Nginx配置WebSocket的详细教程

    Nginx 作为高性能的 HTTP 和反向代理服务器,在处理 WebSocket 协议时,需要进行特定的配置来支持 WebSocket 的连接和通信,下面我们就来看看如何在 Nginx 中配置 WebSocket吧

    2025-03-03
  • 分享一份nginx重启脚本

    分享一份nginx重启脚本

    nginx是超级稳定的服务器,一般不会因为超载问题而需要重启,重启的目的一般都是修改配置文件后需要加载一下
    2012-09-09
  • Nginx反向代理后无法获取客户端真实IP地址

    Nginx反向代理后无法获取客户端真实IP地址

    本文主要介绍了Nginx反向代理后无法获取客户端真实IP地址,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)

    Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)

    为什么需要搭建Nginx集群?为了防止Nginx单点故障造成服务器瘫痪,本文介绍了Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx),感兴趣的可以了解一下
    2021-05-05
  • Nginx启用gzip压缩的方法示例

    Nginx启用gzip压缩的方法示例

    这篇文章主要介绍了Nginx启用gzip压缩的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07

最新评论