V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
edis0n0
V2EX  ›  程序员

Nginx 有办法单独重写 IP 被禁止时的状态码吗?

  •  
  •   edis0n0 · 2022-12-16 16:03:36 +08:00 · 1158 次点击
    这是一个创建于 701 天前的主题,其中的信息可能已经有所发展或是发生改变。

    领导要求 IP 被 Nginx 禁止时返回 400 状态码而不是 Nginx 默认的 403 ,查了下 error_page 403 400 /400.html; 能把 403 全替换成 400 状态(不用管为什么,反正我又不用这产品),但其它原因导致的 403 我不想动,有办法单独重写 IP 被禁止时的状态码吗?

    (黑名单里是几万条机房 IP 段,不知道他们哪里搞来的,测了下还挺准,我在用的几个很小的商家的 IP 段全包括进去了)(因为不用经常变动,感觉在程序里拦效率很低,想直接在 Nginx 里拦)

    8 条回复    2022-12-16 23:17:18 +08:00
    wodong
        1
    wodong  
       2022-12-16 16:14:49 +08:00
    可以考虑给 Nginx 写一个模块拦截一下
    dzdh
        2
    dzdh  
       2022-12-16 16:17:20 +08:00
    nginx proxy 给自己。
    Puteulanus
        3
    Puteulanus  
       2022-12-16 16:20:19 +08:00
    Shawns
        4
    Shawns  
       2022-12-16 16:44:40 +08:00   ❤️ 3
    yc8332
        5
    yc8332  
       2022-12-16 16:56:44 +08:00
    可以 nginx 里面搞个 lua 脚本,取 redis 判断。。读文件应该也可以,没试过就是了
    isbase
        6
    isbase  
       2022-12-16 17:19:07 +08:00
    问他为什么要返回 400
    coolloves
        7
    coolloves  
       2022-12-16 22:10:26 +08:00 via Android
    nginx 万事不决就 lua
    edis0n0
        8
    edis0n0  
    OP
       2022-12-16 23:17:18 +08:00
    4 楼 Shawns 的方案看起来可行,我试一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   949 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:39 · PVG 05:39 · LAX 13:39 · JFK 16:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.