红色不该遗忘 发表于 2022-5-9 11:59

关于服务器统计ip的问题

最近有个需求:要将客户端请求过来的ip地址记录下来,并对这些进行后续操作(归属地统计、ip封禁等)
在“如何记录ip”这个问题上,我查过很多资料,大多都是让我从nginx的access.log中提取,但我想,这样子做会不会太被动了?
我的想法是在nginx转发前就执行一个lua脚本,记录下这次请求的ip地址(记录在文件、或是队列、或是redis)却始终不知道如何下手
所以想请教各位大神,我的思路是正确的吗?是否还有更好的解决方案?该如何操作呢

wsl-rm 发表于 2022-5-9 14:11

是这样的呀! 思路是没问题的,很多后台管理系统就是这样把客户端请求ip记录入库的

网络很鬼 发表于 2022-5-9 14:34

宝塔有个付费插件

yn9 发表于 2022-5-9 14:39

直接aop获取

pzx521521 发表于 2022-5-9 15:08

样子做会不会太被动,这是什么意思呢?
access.log 本来就是写到文件里面了

如果是对日志类的监测动态监测文件变化就好了 参考Prometheus
原因如下:
1.如果在转发前执行操作, 实际生成中如果这些操作出问题了, 转发是不是也会失败?
2.lua脚本对处理数据/连接数据库等复杂操作并不友好

serious_snow 发表于 2022-5-12 19:36

本帖最后由 serious_snow 于 2022-5-12 19:38 编辑

反向代{过}{滤}理那里加一条

       proxy_set_header X-Real-IP       $remote_addr;

然后你的程序里面直接读取request的header里的X-Real-IP就可以了

比我我的是这样的

    location /api {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host            $http_host;
      proxy_set_header X-Real-IP       $remote_addr;
      proxy_pass http://127.0.0.1:7033/api;
    }
页: [1]
查看完整版本: 关于服务器统计ip的问题