nginx動態新增訪問白名單的方法

2022-09-25 13:39:11 字數 2046 閱讀 2333

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

一、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.將檔案傳回...