X-Forwarded-For 和 X-Real-IP 的区别?
做动静分离的时候这里有疑问所以请教度娘
网上摘得,觉得比较有用就记下了
一般来说,X-Forwarded-For
是用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP
追加在X-Forwarded-For
中
来自4.4.4.4
的一个请求,header包含这样一行
X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3
代表 请求由1.1.1.1
发出,经过三层代理,第一层是2.2.2.2
,第二层是3.3.3.3
,而本次请求的来源IP4.4.4.4
是第三层代理
而X-Real-IP
,没有相关标准,上面的例子,如果配置了X-Read-IP
,可能会有两种情况
// 最后一跳是正向代理,可能会保留真实客户端IP
X-Real-IP: 1.1.1.1
// 最后一跳是反向代理,比如Nginx,一般会是与之直接连接的客户端IP
X-Real-IP: 3.3.3.3
所以 ,如果只有一层代理,这两个头的值就是一样的
按照HTTP 请求头中的 X-Forwarded-For这篇文章的例子,如果在Nginx的反向代理中添加了配置“proxy_set_header X-Real-IP $remote_addr”,X-Real-IP的值为”3.3.3.3“