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的WebSocket反向代理实践过程

    Nginx的WebSocket反向代理实践过程

    这篇文章主要介绍了Nginx的WebSocket反向代理实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • 查看nginx配置是否启用压缩功能方式

    查看nginx配置是否启用压缩功能方式

    这篇文章主要介绍了查看nginx配置是否启用压缩功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-11-11
  • Nginx配置指令location匹配符优先级和安全问题

    Nginx配置指令location匹配符优先级和安全问题

    使用nginx 很久了,它的性能高,稳定性表现也很好,得到了很多人的认可。特别是它的配置,有点像写程序一样,每行命令结尾一个";"号,语句块用"{}"括起来。 配制好,直接nginx -t 检查配制情况,配制成功,直接运行:service nginx reload .服务器没有任何宕机情况下,实现平稳修改配置
    2014-03-03
  • 在Nginx中拦截特定用户代理的教程

    在Nginx中拦截特定用户代理的教程

    这篇文章主要介绍了在Nginx中拦截特定用户代理的教程,并为这些被拦截的用户设置一个黑名单以方便管理,需要的朋友可以参考下
    2015-06-06
  • Nginx反向代理后台报404遇到的解决方法

    Nginx反向代理后台报404遇到的解决方法

    Nginx反向代理404错误通常是由服务器配置不正确、文件路径不正确、文件权限不正确、文件名大小写不正确等,本文主要介绍了Nginx反向代理后台报404遇到的解决方法,感兴趣的可以了解一下
    2023-11-11
  • Nginx限流配置的几种方案的使用小结

    Nginx限流配置的几种方案的使用小结

    Nginx为我们提供了请求限制模块、基于令牌桶算法的流量限制模块,可以方便的控制令牌速率,自定义调节限流,实现基本的限流控制,下面就来介绍一下
    2025-05-05
  • 强大的 Web 应⽤服务器OpenResty安装(Nginx仓库)

    强大的 Web 应⽤服务器OpenResty安装(Nginx仓库)

    OpenResty 是⼀个强大的 Web 应⽤服务器,Web 开发⼈员可以使用 Lua 脚本语⾔调动 Nginx ⽀持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统
    2023-06-06
  • 浅谈Nginx请求限制和访问控制的实现

    浅谈Nginx请求限制和访问控制的实现

    这篇文章主要介绍了浅谈Nginx请求限制和访问控制的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Nginx禁用TLSv1.0 1.1改为TLSv1.2 1.3的操作方法

    Nginx禁用TLSv1.0 1.1改为TLSv1.2 1.3的操作方法

    使用Mozilla SSL配置工具生成配置,修改nginx.conf的ssl_protocols和ssl_ciphers,通过ssllabs检测及Linux命令测试TLS版本支持情况,确保网站SSL安全配置生效,本文给大家介绍Nginx禁用TLSv1.0 1.1改为TLSv1.2 1.3的操作方法,需要的朋友一起看看吧
    2025-08-08
  • nginx部署前端项目location时root和alias配置指南

    nginx部署前端项目location时root和alias配置指南

    nginx指定文件路径有两种方式root和alias,下面这篇文章主要给大家介绍了关于nginx部署前端项目location时root和alias配置的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01

最新评论