X-real-ip与X-Forwarded-For

Posted yanze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了X-real-ip与X-Forwarded-For相关的知识,希望对你有一定的参考价值。

经过反向代理后,客户端与web服务器之间添加了中间层,因此:

1.代理服务器使用$remote_addr拿到的会是客户端的ip

2. web服务器使用$remote_addr拿到的会是代理服务器的ip

3.客户端使用getRemoteAddr()拿到的会是反向代理服务器的ip

 

为了让服务器能得到客户端的ip,可以在nginx中做些赋值操作:

1.proxy_set_header  X-real-ip $remote_addr;

即在请求头部放入真实ip

 

2.proxy_set_header  X-Forwarded-For $proxy_add_x_forward-for;

这一段的意思是: 添加一个$proxy_add_x_forward-for到X-Forwarded-For 

设置X-Forwarded-For后,每次经过代理转发都会有记录,格式是: client,proxy1,proxy2,这是一个非rfc标准,因此默认没有,需要手动添加,

那么$proxy_add_x_forwarded_for又是什么?

$proxy_add_x_forwarded_for变量包含客户端请求头中的"X-Forwarded-For",与$remote_addr两部分,他们之间用逗号分开。

 

以上是关于X-real-ip与X-Forwarded-For的主要内容,如果未能解决你的问题,请参考以下文章

X-Forwarded-For 和 X-Real-IP 的区别?

HTTP 请求头中的 X-Forwarded-For,X-Real-IP

HTTP 请求头中的 Remote_Addr,X-Forwarded-For,X-Real-IP

X-Forwarded-For和相关几个头部的理解

经过Nginx代理后如何区分HTTP请求头中的X-Forwarded-For和X-Real-IP,以及Java示例

反向代理与 Real-IP 和 X-Forwarded-For