麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > Nginx > 正文

nginx動態添加訪問白名單的方法

2024-08-30 12:28:31
字體:
來源:轉載
供稿:網友

本文實現的功能是:網站啟用訪問白名單,對于不在白名單中又需要訪問的客戶,只需打開一個不公開的網址,然后自動獲得2小時的訪問權限,時間達到后自動刪除訪問權限

實現此功能需要以下幾個步驟:

  • nginx啟用訪問白名單
  • 客戶打開指定網址自動添加訪問白名單
  • 為網址添加簡單的認證
  • 每兩個小時自動恢復默認白名單,刪除臨時IP訪問權限

一、nginx配置訪問白名單

這個就比較簡單了,簡單貼一下配置:

............nginx.conf...........

geo $remote_addr $ip_whitelist {default 0;include ip_white.conf;}

............server段............

location / {  if ($ip_whitelist = 1) {   break;  }  return 403; }

啟用白名單的IP寫在ip_white.conf文件中,格式為: 8.8.8.8 1;,只需將IP按照格式寫入ip_white.conf中即可獲得訪問權限。

二、使用LUA自動添加白名單

nginx需配合lua模塊才能實現這個功能,新建一個location,客戶訪問這個location時,使用lua拿到客戶IP并調用shell腳本寫入ip_white.conf中,寫入后自動reload nginx使配置生效,lua代碼:

location /addip {content_by_lua 'CLIENT_IP = ngx.req.get_headers()["X_real_ip"]if CLIENT_IP == nil then CLIENT_IP = ngx.req.get_headers()["X_Forwarded_For"]endif CLIENT_IP == nil then CLIENT_IP = ngx.var.remote_addrendif CLIENT_IP == nil then CLIENT_IP = "unknown"end ngx.header.content_type = "text/html;charset=UTF-8"; ngx.say("你的IP : "..CLIENT_IP.."<br/>"); os.execute("/opt/ngx_add.sh "..CLIENT_IP.."") ngx.say("添加白名單完成,有效時間最長為2小時");';}

/opt/ngx_add.sh shell腳本內容:

#!/bin/bashngx_conf=/usr/local/nginx/conf/52os.net/ip_white.confngx_back=/usr/local/nginx/conf/52os.net/ip_white.conf.defaultresult=`cat $ngx_conf |grep $1`case $1 inrec) rm -rf $ngx_conf  cp $ngx_back $ngx_conf  /usr/local/nginx/sbin/nginx -s reload ;;*) if [ -z "$result" ]  then   echo "#####add by web #####" >>$ngx_conf   echo "$1 1;" >> $ngx_conf   /usr/local/nginx/sbin/nginx -s reload  else   exit 0  fi;;esac

該腳本有兩個功能:

  • 自動加IP并reload nginx
  • 恢復默認的ip_white.conf文件,配合定時任務可以取消非默認IP的訪問權限

nginx主進程使用root運行,shell腳本reload nginx需設置粘滯位:

chown root.root /usr/local/nginx/sbin/nginxchmod 4755 /usr/local/nginx/sbin/nginx

nginx啟用lua模塊見nginx啟用lua模塊

三、添加簡單的認證

使用base auth 添加簡單的用戶名密碼認證,防止非授權訪問,生成密碼文件:

 

復制代碼 代碼如下:

printf "52os.net:$(openssl passwd -crypt 123456)/n" >>/usr/local/nginx/conf/pass

 

賬號:52os.net

密碼:123456

在剛剛的location中加入:

location /addip {   auth_basic "nginx auto addIP for 52os.net";   auth_basic_user_file /usr/local/nginx/conf/pass;    autoindex on;

......Lua代碼略......

四、自動恢復默認IP白名單

通過web獲得訪問權限的IP,設置訪問有效期為兩小時,我是通過每兩小時恢復一次默認的IP白名單文件實現。把ip_white.conf文件復制一份作為默認的白名單模版:

 

復制代碼 代碼如下:

cp /usr/local/nginx/conf/52os.net/ip_white.conf /usr/local/nginx/conf/52os.net/ip_white.conf.default

 

使用定時任務每兩小時通用上面的shell腳本來恢復,定時任務為:

1 */2 * * * root /opt/ngx_add.sh rec

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲成人免费视频在线 | 亚洲人成网站在e线播放 | 正在播放91精 | 一区二区久久电影 | 刘亦菲一区二区三区免费看 | 蜜桃麻豆视频 | 国产超碰人人做人人爱 | 中文在线免费观看 | 色网站在线免费观看 | 毛片免费观看视频 | 欧美大穴 | 国产在线精品一区二区三区 | 福利一区二区三区视频在线观看 | 精品久久久av | 天堂二区| 日本在线播放一区二区 | 国产精品wwww | 在线 日本 制服 中文 欧美 | 久久精品中文字幕一区二区三区 | 中文字幕在线播放第一页 | 在线a | 免费午夜视频 | 国产美女视频一区二区三区 | 今井夏帆av一区二区 | 久草在线新时代视觉 | 精品国产91久久久久久久 | 姑娘第四集免费看视频 | 国产精品视频免费网站 | 国产一级毛片在线看 | 免费99热在线观看 | 欧日一级片 | 国产人成免费爽爽爽视频 | a在线视频 | 亚洲欧美国产高清 | 97伦理| 欧美精品18| 激情av在线| 欧美精品免费一区二区三区 | 黄片毛片一级 | 91久久久久久 | 日韩视频在线一区二区三区 |