Node.js拿到客户端真实ip

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获取

你可能感兴趣的:(Node.js拿到客户端真实ip)