1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        實現(xiàn)動態(tài)封禁 IP就是這么簡單~

        共 962字,需瀏覽 2分鐘

         ·

        2021-09-19 01:13

        原文:https://segmentfault.com/a/1190000018267201

        為了封禁某些爬蟲或者惡意用戶對服務器的請求,我們需要建立一個動態(tài)的 IP 黑名單。對于黑名單之內的 IP ,拒絕提供服務。

        實現(xiàn) IP 黑名單的功能有很多途徑:

        1、在操作系統(tǒng)層面,配置 iptables,拒絕指定 IP 的網絡請求;
        2、在 Web Server 層面,通過 Nginx 自身的 deny 選項 或者 lua 插件 配置 IP 黑名單;
        3、在應用層面,在請求服務之前檢查一遍客戶端 IP 是否在黑名單。

        為了方便管理和共享,我們選擇通過 Nginx+Lua+Redis 的架構實現(xiàn) IP 黑名單的功能,架構圖如下:

        1. 安裝 Nginx+Lua模塊,推薦使用 OpenResty,這是一個集成了各種 Lua 模塊的 Nginx 服務器:

        2. 安裝并啟動 Redis 服務器

        3. 配置 Nginx 示例:

        Nginx 配置,

        lua_shared_dict ip_blacklist 1m

        由 Nginx 進程分配一塊 1M 大小的共享內存空間,用來緩存 IP 黑名單。

        access_by_lua_file lua/ip_blacklist.lua;
        指定 lua 腳本位置。
        4. 配置 lua 腳本,定期從 Redis 獲取最新的 IP 黑名單。

        5. 在 Redis 服務器上新建 Set 類型的數(shù)據(jù) ip_blacklist,并加入最新的 IP 黑名單。
        完成以上步驟后,重新加載 nginx,配置便開始生效了。這時訪問服務器,如果你的 IP 地址在黑名單內的話,將出現(xiàn)拒絕訪問,如下圖:

        以上,便是 Nginx+Lua+Redis 實現(xiàn)的 IP 黑名單功能,具有如下優(yōu)點:
        1. 配置簡單、輕量,幾乎對服務器性能不產生影響;
        2. 多臺服務器可以通過Redis實例共享黑名單;
        3. 動態(tài)配置,可以手工或者通過某種自動化的方式設置 Redis 中的黑名單。
        瀏覽 65
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            扒开美女狂揉网站原神 | 一本色道久久综合无码人妻88 | 最新日韩黄色电影网站 | 免费看黄视频网站 | 国产偷自视频一区二区三区 | 亚洲天堂热 | 很污很黄的网站 | 欧美日韩一二三四区 | 一级a一级a免费观看视频Al明星 | 天堂中文网 |