nginx做为反向代理对X-Forwarded-For的设置

Posted

tags:

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

X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。

标准格式如下:

X-Forwarded-For: client1, proxy1, proxy2

从标准格式可以看出,X-Forwarded-For头信息可以有多个,中间用逗号分隔,第一项为真实的客户端ip,剩下的就是曾经经过的代理或负载均衡的ip地址,经过几个就会出现几个。


在默认情况下,nginx并不会对X-Forwarded-For头做任何的处理,除非用户使用proxy_set_header 参数设置:




(1)

+------+      +------+      +------+

|    |      | nginx|      |    |

| 源站 | <=====> | proxy| <=====> |client|

|    |      |    |      |    |

+------+      +------+      +------+


proxy_set_header        X-Forwarded-For $remote_addr;


(2)

+------+      +------+      +------+      +------+

|    |      | nginx|      |    |      |    |

| 源站 | <=====> | proxy| <=====> |CDN  | <=====> |client|

|    |      |    |      |    |      |    |

+------+      +------+      +------+      +------+

1> CDN设置X-Forwarded-For $remote_addr

2> proxy_set_header        X-Forwarded-For $remote_addr


(3)

+------+      +------+      +------+      +------+      +------+

|    |      | nginx|      |    |      |    |      |    |

| 源站 | <=====> | proxy| <=====> |CDN  | <=====> |client| <=====> |client|

|    |      |    |      |    |      |    |      |    |

+------+      +------+      +------+      +------+      +------+




以上是关于nginx做为反向代理对X-Forwarded-For的设置的主要内容,如果未能解决你的问题,请参考以下文章

Nginx实现多级反向代理客户端IP透传

搞点事情,使用node搭建反向代理

Nginx的安装与配置

nginx 实现动静分离

生产环境优雅的重启基于NginxTornado的Web服务进程

请教问题nginx反向代理proxy