Bagaimana untuk membuat nginx mengalihkan IP tertentu dalam tempoh masa tertentu
漂亮男人
漂亮男人 2017-05-16 17:20:44
0
1
535

Cara membuat nginx mengubah hala IP tertentu dalam tempoh masa tertentu
Saya menulis peraturan penapisan:

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

Ada masalah di sini, iaitu, jika pihak lain memenuhi syarat, ia akan diubah hala, tetapi apabila anda melawat semula selepas berpuluh-puluh saat atau beberapa saat, pengalihan tidak akan berfungsi.
Apa yang saya mahu ialah apabila pihak yang satu lagi mencetuskan peraturan ini buat kali pertama, IP pihak yang satu lagi akan diubah hala pada hari berikutnya, tidak kira sama ada peraturan tersebut dicetuskan seterusnya. Apabila 24 jam telah berlalu, maka 解封, jika pihak yang satu lagi mencetuskannya lagi satu hari kemudian, kemudian ubah halanya untuk hari lain.

Di Internet, dikatakan modul ngx_white_black_list digunakan, tetapi tidak jelas di mana dalam kod sumber untuk menulis (menulis semula) arahan yang akan dijalankan oleh senarai hitam. Berikut adalah jawapan yang diberikan dalam talian:

动态黑名单
    要使用该功能必须对 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;
                 }
                 ...
                        }
                        ...
                }

Hanya 禁止访问 diberikan di sini. Tidak pasti sama ada ia perlu ditulis semula sebagai ubah hala

漂亮男人
漂亮男人

membalas semua(1)
迷茫

Jika anda ingin menghalang serangan, anda harus menggunakan iptables dan mengosongkannya selepas tempoh masa tertentu.
Jika anda menggunakan Openresty, anda boleh menggunakan rewrite_by_lua

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan