恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Nginx 作为反向代理时设置的请求头
首页
资讯中心
/
Nginx 作为反向代理时设置的请求头
Nginx 作为反向代理时设置的请求头
发布时间:2026/9/29 16:59:44
这三个参数是Nginx 作为反向代理时设置的请求头目的是把真实的客户端信息传递给后端应用Tomcat、Spring Boot、Node.js 等。1234567location/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_portNginx 接收请求时监听的端口号。作用后端应用拿到的Host头和用户访问的保持一致避免后端误判。 例子用户访问1http://example.com:8080/api/userNginx 转发时会带上1Host: example.com:8080proxy_set_header X-Real-IP $remote_addr;含义告诉后端应用真实客户端的 IP 地址。$remote_addrNginx 接收到请求时客户端的源 IP。作用让后端知道用户的真实 IP而不是只看到 Nginx 的 IP。 例子如果用户 IP 是203.0.113.5那么后端会收到1X-Real-IP: 203.0.113.5proxy_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) → 后端。后端收到的头可能是1X-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通常要优先取X-Forwarded-For 的第一个 IP如果没有就取 X-Real-IP否则再 fallback 到 request.getRemoteAddr()