1、X-Real-IP
nodejs服务nginx做的反向代理,之前一直用从请求头里边字段X-Real-IP获取真实ip,nginx配置如下
location / {
proxy_set_header X-Real-IP $remote_addr;
}
X-Real-IP,没有相关标准,比如Nginx,一般会是与之直接连接的客户端IP,如果经过多级代理,最后拿到的真实ip是与之直接相连的上级代理的ip,而不是客户端得真实ip。
2、X-Forwarded-For
一般来说,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是第三层代理。
Nginx配置如下:
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
3、X-Forwarded-For和X-Real-IP的区别
1)X-Forwarded-For记录的是经过的所有代理ip,X-Real-IP记录上一级的ip
2)当只有一级代理的时候,两者的值是相等的
3)通常情况下使用X-Forwarded-For获取