X-Forwarded-For,X-Real-Ip
X-Forwarded-For的格式:
X-Forwarded-For: client, proxy1, proxy2
说明:
client指用户机的ip,或请求来源的最初的机器的ip
proxy1指一级代理
proxy2指二级代理
例如:
X-Forwarded-For:192.168.247.1, 192.168.247.131, 192.168.247.132
X-Real-Ip的格式:
X-Real-Ip:10.119.137.3
只有一个,指请求到nginx的机器的ip
在一般情况下,就是没有使用代理的用户的ip
异同:
X-Forwarded-For
后面的ip可以有一个或多个
X-Real-Ip
只有一个,并且一定和X-Forwarded-For的最后一个ip相同
对于 Web 应用来说,X-Forwarded-For 和 X-Real-IP 就是两个普通的请求头,自然就不做任何处理原样输出了。这说明,对于直连部署方式,除了从 TCP 连接中得到的 Remote Address 之外,请求头中携带的 IP 信息都不能信。
但是可以通过nginx将Remote Address设置为X-Real-Ip,并将其设置为X-Forwarded-For的最后一个,而这些内容将是完全可信的.
注意:X-Forwarded-For 最后一节是 Nginx 追加上去的,但之前部分都来自于 Nginx 收到的请求头,这部分用户输入内容完全不可信,不可信,不可信.
proxy_set_header X-Forwarded-For $x_forwarded_for;
proxy_set_header X-Real-Ip $remote_addr;
这样后端应用就可以从请求头中的X-Real-Ip
获取需要的ip