nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > Nginx  反向代理设置的请求头

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

作者:思静鱼

本文主要介绍了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;

👉 例子:
用户访问

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

Nginx 转发时会带上:

Host: example.com:8080

proxy_set_header X-Real-IP $remote_addr;

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

X-Real-IP: 203.0.113.5

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

👉 例子:
用户 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 反向代理设置的请求头内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文