Comment faire en sorte que Nginx redirige une certaine adresse IP dans un certain laps de temps
漂亮男人
漂亮男人 2017-05-16 17:20:44
0
1
524

Comment faire en sorte que nginx redirige une certaine adresse IP dans un certain laps de temps
J'ai écrit une règle de filtrage :

set $trigger 0;
if ($request_body ~ "woaini|admin"){
    set $trigger 1;
}
if ($trigger = 1) {
    重定向命令
}

Il y a un problème ici, c'est-à-dire que si l'autre partie remplit les conditions, elle sera redirigée, mais lorsque vous reviendrez après des dizaines ou quelques secondes, la redirection ne fonctionnera pas.
Ce que je veux, c'est que lorsque l'autre partie déclenche ces règles pour la première fois, l'adresse IP de l'autre partie soit redirigée le lendemain, que les règles soient ou non déclenchées ensuite. Lorsque 24 heures se sont écoulées, alors 解封, si l'autre partie le déclenche à nouveau un jour plus tard, redirigez-le pour un autre jour.

Sur Internet, on dit que le module ngx_white_black_list est utilisé, mais on ne sait pas où dans le code source écrire (réécrire) la commande à exécuter par la liste noire. Voici les réponses données en ligne :

动态黑名单
    要使用该功能必须对 ngx_http_limit_req_module.c 进行patch
    在ngx_http_limit_req_module.c中
    增加#include <white_black_list.h>
    并修改代码找到:
    "
    if (rc == NGX_BUSY) {
        ngx_log_error(lrcf->limit_log_level, r->connection->log, 0,
                      "limiting requests, excess: %ui.%03ui by zone \"%V\"",
                      excess / 1000, excess % 1000,
                      &limit->shm_zone->shm.name);
        "
    在其下面增加:
    ngx_black_add_item_interface(r, 1);
        配备关键字:
                dyn_black
        格式:
                dyn_black $zone_name time;
        比如:
                dyn_black black 60; //禁止访问60秒,60秒后自动解除
        注意:
                必须要配置black_list
        配置示例:
                http{
                        ....
                        white_black_list_conf conf/black.list zone=black:4m;
                        limit_req_zone $binary_remote_addr zone=one:8m rate=4r/s;
                        ...
                        server {
                                location / {
                 black_list black on;
                 limit_req zone=one burst=6;
                 dyn_black black 60; //禁止访问60秒,60秒后自动解除
                 ...
                 }
                 location /xxx {
                 sec_config on;
                 }
                 ...
                        }
                        ...
                }

Seul 禁止访问 est donné ici. Je ne sais pas s'il doit être réécrit en tant que redirection

漂亮男人
漂亮男人

répondre à tous(1)
迷茫

Si vous souhaitez éviter les attaques, vous devez utiliser iptables et l'effacer après un certain temps.
Si vous utilisez Openresty, vous pouvez utiliser rewrite_by_lua

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal