国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > Nginx > 正文

nginx動態(tài)添加訪問白名單的方法

2024-08-30 12:25:47
字體:
供稿:網(wǎng)友

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

實現(xiàn)此功能需要以下幾個步驟:

nginx啟用訪問白名單 客戶打開指定網(wǎng)址自動添加訪問白名單 為網(wǎng)址添加簡單的認(rèn)證 每兩個小時自動恢復(fù)默認(rèn)白名單,刪除臨時IP訪問權(quán)限

一、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中即可獲得訪問權(quán)限。

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

nginx需配合lua模塊才能實現(xiàn)這個功能,新建一個location,客戶訪問這個location時,使用lua拿到客戶IP并調(diào)用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腳本內(nèi)容:

#!/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 恢復(fù)默認(rèn)的ip_white.conf文件,配合定時任務(wù)可以取消非默認(rèn)IP的訪問權(quán)限

nginx主進(jìn)程使用root運(yùn)行,shell腳本reload nginx需設(shè)置粘滯位:

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

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

三、添加簡單的認(rèn)證

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 钟祥市| 三穗县| 西吉县| 乌兰察布市| 丹寨县| 岳池县| 诸城市| 长顺县| 崇信县| 玛多县| 宾川县| 都匀市| 塔河县| 英吉沙县| 杂多县| 信阳市| 乡宁县| 青海省| 兖州市| 唐海县| 辉县市| 武清区| 朝阳区| 抚松县| 余姚市| 张家港市| 开阳县| 武城县| 凤阳县| 济宁市| 邯郸县| 长沙市| 临沂市| 平安县| 敦化市| 高要市| 盐亭县| 锦屏县| 贺州市| 驻马店市| 南昌县|