如何通过Nginx的Proxy-Set-Header功能将客户端IP透传给后端服务器?

2026-05-06 14:170阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计779个文字,预计阅读时间需要4分钟。

如何通过Nginx的Proxy-Set-Header功能将客户端IP透传给后端服务器?

在Nginx作为反向代理时,配置示例如下:

确保 Nginx 正确透传真实 IP 头字段

Nginx 本身不自动识别“真实 IP”,需根据上游来源显式设置 HTTP 头。常见组合如下:

  • X-Real-IP:最简方式,只传一个 IP(推荐用于单层代理)
    proxy_set_header X-Real-IP $remote_addr;
  • X-Forwarded-For:标准字段,支持追加(多层代理时保留原始链路)
    proxy_set_header X-Forwarded-For $remote_addr;
    若已有值(如上一级代理已设),可用 $proxy_add_x_forwarded_for 自动追加:
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • X-Forwarded-ProtoX-Forwarded-Host:辅助传递协议与域名,避免后端误判 HTTPS 或生成错误链接

限定可信代理范围,防止 IP 伪造

仅设 header 不够——攻击者可手动发送 X-Forwarded-For: 1.2.3.4 伪造 IP。Nginx 必须明确知道哪些客户端是“可信代理”,才信任其携带的转发头。

阅读全文

本文共计779个文字,预计阅读时间需要4分钟。

如何通过Nginx的Proxy-Set-Header功能将客户端IP透传给后端服务器?

在Nginx作为反向代理时,配置示例如下:

确保 Nginx 正确透传真实 IP 头字段

Nginx 本身不自动识别“真实 IP”,需根据上游来源显式设置 HTTP 头。常见组合如下:

  • X-Real-IP:最简方式,只传一个 IP(推荐用于单层代理)
    proxy_set_header X-Real-IP $remote_addr;
  • X-Forwarded-For:标准字段,支持追加(多层代理时保留原始链路)
    proxy_set_header X-Forwarded-For $remote_addr;
    若已有值(如上一级代理已设),可用 $proxy_add_x_forwarded_for 自动追加:
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • X-Forwarded-ProtoX-Forwarded-Host:辅助传递协议与域名,避免后端误判 HTTPS 或生成错误链接

限定可信代理范围,防止 IP 伪造

仅设 header 不够——攻击者可手动发送 X-Forwarded-For: 1.2.3.4 伪造 IP。Nginx 必须明确知道哪些客户端是“可信代理”,才信任其携带的转发头。

阅读全文