V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
51300520
V2EX  ›  问与答

请问 nginx 怎样主动断开 TCP 长连接

  •  
  •   51300520 · 2018-12-01 01:55:29 +08:00 · 4462 次点击
    这是一个创建于 2162 天前的主题,其中的信息可能已经有所发展或是发生改变。

    nginx 支持长连接代理,我现在想像 HTTP 那样客户端直接连接 nginx,nginx 后面是若干微服务,但是我不知道怎样主动让 nginx 断开连接,比如某个用户登录连续三次失败,我的登录微服务判定该用户有风险,需要断开该用户的连接,我要怎样才能让 nginx 主动断开?

    恐怕做不到是吗?我是不是还是只能自己写网关接入用户才能自主可控,网关连接 nginx,nginx 后面是微服务这种架构?

    我想的是如果可以做到,就可以把自己写网关接入层省了。像 HTTP 那样,用户直接连 nginx,有人用过这种架构嘛?

    4 条回复    2018-12-01 14:12:30 +08:00
    watzds
        1
    watzds  
       2018-12-01 10:04:16 +08:00 via Android
    Keepalive ?也就几秒吧
    whileFalse
        2
    whileFalse  
       2018-12-01 11:23:12 +08:00
    详细说说场景
    msg7086
        3
    msg7086  
       2018-12-01 13:06:41 +08:00
    返回 HTTP 444,让 nginx 主动关闭连接。
    046569
        4
    046569  
       2018-12-01 14:12:30 +08:00
    可以用 ngx_lua 或者 ngx_mruby 模块.
    用户还是链接 Nginx , Nginx 在内部调用模块检查 Redis 中的黑名单,微服务登录失败时写入 Redis 黑名单.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1798 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 16:40 · PVG 00:40 · LAX 09:40 · JFK 12:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.