Nginx向ExpressJS转发真实IP地址

2020-04-02 21:38:15

其他的配置都可以,但是我用req.ip并没有获得用户的真实ip。

用的其他方法,在文章最后。

由于服务器配置了Nginx的反向代理,在ExpressJS中无法获取到真实的IP地址。本文就介绍了如何配置Nginx以及ExpressJS使其可以显示用户的真实地址。

Nginx中的配置

修改你的配置文件

server {    listen       80;    server_name  XXX.YYY.ZZZ;    location / {        proxy_set_header  Host $host;        proxy_set_header  X-Real-IP $remote_addr;        proxy_set_header  X-Forwarded-Proto https;        proxy_set_header  X-Forwarded-For $remote_addr;        proxy_set_header  X-Forwarded-Host $remote_addr;        proxy_pass    http://127.0.0.1:3003/;

    }
}

重要的部分就是proxy_set_header部分。

ExpressJS中的设置

app.js中的靠前位置,添加:

app.set('trust proxy', 'loopback');

搞定

通过上述的设置,现在你使用req.ipreq.ips就可以获取到用户真实的IP地址了。

资料

获取用户真实ip

let getClientIp = function (req) {
    return req.headers['x-forwarded-for'] ||
        req.connection.remoteAddress ||
        req.socket.remoteAddress ||
        req.connection.socket.remoteAddress || '';
};
 
console.log(getClientIp(req));
let ip = getClientIp(req).match(/\d+.\d+.\d+.\d+/);
console.log(ip);
ip = ip ? ip.join('.') : null;
console.log(ip);


  • 2019-10-15 09:52:00

    动图解释递归,按值传递和按引用传递的区别,线性查找和二分查找,二叉查找树

    对于大部分人,数据结构一直是一个短板,当然我也是,不是学不会,而是容易忘,就拿最简单的排序来说吧,当时学习的时候明明已经弄得很清楚了,过了一段时间不用又忘记了,还要重新再看一遍,不知道有多少小伙伴和我有一样的烦恼。今天让我们用用动图的方式学习一下数据结构中的递归和二分查找吧,这种讲解方式非常生动,而且非常容易记住和理解。

  • 2019-10-16 21:02:47

    vue中mixins的详细分析一

    混入 (mixins): 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

  • 2019-10-16 21:04:47

    vue中mixins的详细分析二

    当混合里面包含异步请求函数,而我们又需要在组件中使用异步请求函数的返回值时,我们会取不到此返回值,如下: