V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
xmlf
V2EX  ›  NGINX

如何在源站 nginx 设置 deny ip?

  •  
  •   xmlf · 2019-01-27 10:34:30 +08:00 · 4413 次点击
    这是一个创建于 2128 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用反向代理。

    在前端 nginx http 中加入 deny ip 是正常的。

    现在有需要,根据后端程序产生的 log,进行统计判断自动 deny ip。

    后端获取用户真实 IP 地址都是正确的。。

    在后端源站 nginx 中加入 deny ip 不起作用。

    请各位大佬指教。。

    如何在后端源站 nginx 中 deny ip ?

    15 条回复    2019-01-28 11:46:36 +08:00
    zjlletian
        1
    zjlletian  
       2019-01-27 10:52:52 +08:00
    前端 nignx 加上 xff,后端通过 xff 判断客户端 ip
    pubby
        2
    pubby  
       2019-01-27 10:54:40 +08:00 via Android
    换个思路,不要 deny,直接返回 404
    xmlf
        3
    xmlf  
    OP
       2019-01-27 11:00:00 +08:00 via Android
    @zjlletian 后端日志和程序获取用户 ip 没任何问题,deny ip 不起作用
    xmlf
        4
    xmlf  
    OP
       2019-01-27 11:01:30 +08:00 via Android
    @pubby 如何自动批量实现?
    AlisaDestiny
        5
    AlisaDestiny  
       2019-01-27 11:45:13 +08:00
    nginx 加入 deny ip 相当于修改了配置文件,要生效需要 reload.
    firebroo
        6
    firebroo  
       2019-01-27 12:58:36 +08:00 via Android
    用 lua 在 nginx 实现 deny 逻辑,deny 数据存 redis
    xmlf
        7
    xmlf  
    OP
       2019-01-27 14:32:30 +08:00 via Android
    @AlisaDestiny 当然 reload 了
    xmlf
        8
    xmlf  
    OP
       2019-01-27 14:33:36 +08:00 via Android
    @firebroo ……要这么复杂吗?没什么简便些方法吗?
    zjlletian
        9
    zjlletian  
       2019-01-27 15:49:16 +08:00
    @xmlf 你为啥非要 deny ip 呢,自己写一下 if 规则不行么。。。 如果非要 deny,那你前端就不能用七层负载均衡,改用 lvs 可以正确获取用户 ip。
    xmlf
        10
    xmlf  
    OP
       2019-01-27 16:10:17 +08:00
    @zjlletian 如果用 if 规则,可以通过脚本自动增加 IP 或者移除 IP 吗?求赐教
    xmlf
        11
    xmlf  
    OP
       2019-01-27 16:45:52 +08:00 via Android
    @zjlletian 我现在思路是,前端从后端源站 wget deny.conf 文件,保存在前端后 nginx reload
    firebroo
        12
    firebroo  
       2019-01-27 19:45:35 +08:00 via Android
    lua 不复杂啊,几行代码
    willis
        13
    willis  
       2019-01-27 19:46:40 +08:00   ❤️ 1
    最前端不开 realip,传 xff 到后端,后端 nginx 用 realip 模块 ,把 XFF 设置成 remote addr,后端就能用 deny ip 了,
    不过还是建议用 lua + redis,好处是可以按需,不用 reload
    popvlovs
        14
    popvlovs  
       2019-01-28 11:27:08 +08:00
    lua + redis 比较方便,OpenResty 了解一下
    ducklyl
        15
    ducklyl  
       2019-01-28 11:46:36 +08:00
    nginx+lua+redis,在 lua 中过滤禁止 IP.把 IP 列表存入 redis,这样效率较高。可实时验证。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1117 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:33 · PVG 07:33 · LAX 15:33 · JFK 18:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.