實現此功能需要以下幾個步驟:
一、nginx配置訪問白名單
這個就比較簡單了,簡單貼一下配置:
............nginx.conf...........
geo $remote_addr $ip_whitelist
............server段............
location /
return 403;
}啟用白名單的ip寫在ip_white.conf檔案中,格式為: 8.8.8.8 1;,只需將ip按照格式寫入ip_white.conf中即可獲得訪問許可權。
二、使用lua自動新增白名單
nginx需配合lua模組才能實現這個功能,新建乙個location,客戶訪問這個location時,使用lua拿到客戶ip並呼叫shell指令碼寫入ip_whiwww.cppcns.comte.conf中,寫入後自動reload nginx使配置生效,lua**:
location /addip
/opt/ngx_add.sh shell指令碼內容:
#!/bin/bash
ngx_conf=/usr/local/nginx/conf/52os.net/ip_white.conf
ngx_back=/usr/local/nginx/conf/52os.net/ip_white.conf.default
result=`cat $ngx_conf |grep $1`
case $1 in
rec)
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
該指令碼有兩個功能:
nginx主程序使用root執行,shell指令碼reload nginx需設定粘滯位:
chown root.root /usr/local/nginx/sbin/nginx
chmod 4755 /usr/local/nginx/sbin/nginx
nginx啟用lua模組見nginx啟用lua模組
三、新增簡單的認證
使用base auth 新增簡單的使用者名稱密碼認證,防止非授權訪問,生成密碼檔案:
複製** **如下:
printf "52os.net:$(openssl passwd -crypt 123456)\n" >>/usr/loc程式設計客棧al/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
使用定時任務每兩小時通用上面的she指令碼來恢復,定時任務為:
1 */2 * * * root /opt/ngx_add.sh rec
本文標題: nginx動態新增訪問白名單的方法
本文位址:
nginx設定目錄白名單 ip白名單
1.設定目錄白名單 對指定請求路徑不設定限制,如對請求路徑為api目錄下的請求不做限制,則可寫為 limit conn conn 20 limit rate 500k 因nginx會優先進行精準匹配,所以以上寫法即接觸了對api目錄下屬路徑的限制 2.設定ip白名單,需用到nginx geo 與 n...
xLua新增白名單
這裡說明一下,在用ulua專案開發的後期,遇到乙個很嚴重的情況 ios對可執行檔案的可執行檔案 size進行了限制,大小為60m ios下面的1m 1000kb 1000 1000b 在後面某個版本發版本的時候發現這個size超出了這個限制,雖然只超出了2m,但是影響了發版本。針對這種情況,對專案的...
Nginx白名單設定
nginx應用的配置檔案,conf資料夾nginx.conf檔案 在http屬性中配置白名單ip,在ip後的1代表可以訪問,0代表不可訪問,default代表預設 在server的location中用該函式作為判斷,如果不是白名單ip,將被nginx攔截,返回403 if geo 0 1.將檔案傳回...