亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2017年02月09日 09:13:41   作者:閱心筆記  
本篇文章主要介紹了nginx動態(tài)添加訪問白名單的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

  • nginx啟用訪問白名單
  • 客戶打開指定網(wǎng)址自動添加訪問白名單
  • 為網(wǎng)址添加簡單的認證
  • 每兩個小時自動恢復默認白名單,刪除臨時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模塊才能實現(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"]
end
if CLIENT_IP == nil then
 CLIENT_IP = ngx.var.remote_addr
end
if 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/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

該腳本有兩個功能:

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

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/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白名單文件實現(xiàn)。把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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • OpenResty中實現(xiàn)按QPS、時間范圍、來源IP進行限流的方法

    OpenResty中實現(xiàn)按QPS、時間范圍、來源IP進行限流的方法

    OpenResty是一個基于Nginx與Lua的高性能Web平臺,它通過LuaJIT在Nginx中運行高效的Lua腳本和模塊,可以用來處理復雜的網(wǎng)絡請求,并且支持各種流量控制和限制的功能,這篇文章主要介紹了OpenResty中實現(xiàn)按QPS、時間范圍、來源IP進行限流,需要的朋友可以參考下
    2024-02-02
  • Nginx 反向代理與負載均衡運行小結

    Nginx 反向代理與負載均衡運行小結

    Nginx還支持對后端服務器進行健康檢查,當某個服務器不可用時,Nginx會自動將流量重定向到其他可用的服務器,這篇文章給大家分享Nginx 反向代理與負載均衡是如何運行的,感興趣的朋友一起看看吧
    2024-03-03
  • 使用Nginx?+?Keepalived?實現(xiàn)高可用?Web?負載均衡筆記(虛擬機)

    使用Nginx?+?Keepalived?實現(xiàn)高可用?Web?負載均衡筆記(虛擬機)

    這篇文章主要介紹了使用Nginx?+?Keepalived?實現(xiàn)高可用?Web?負載均衡筆記,需要的朋友可以參考下
    2023-08-08
  • nginx 負載均衡的三種參數(shù)設置

    nginx 負載均衡的三種參數(shù)設置

    這篇文章主要介紹了nginx 負載均衡的三種參數(shù)設置,需要的朋友可以參考下
    2017-07-07
  • 詳解Nginx http資源請求限制(三種方法)

    詳解Nginx http資源請求限制(三種方法)

    這篇文章主要介紹了Nginx http資源請求限制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • nginx之內(nèi)存池的實現(xiàn)

    nginx之內(nèi)存池的實現(xiàn)

    本文主要介紹了nginx之內(nèi)存池的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Nginx ssi合并頁面的具體實現(xiàn)

    Nginx ssi合并頁面的具體實現(xiàn)

    nginx的ssi模塊是一種類似于ASP的基于服務器的網(wǎng)頁制作技術,本文主要介紹了Nginx ssi合并頁面的具體實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • Nginx將http轉換成https的詳細過程

    Nginx將http轉換成https的詳細過程

    相信大家在現(xiàn)有項目里都會通過https訪問,這篇文章主要給大家介紹了關于Nginx將http轉換成https的詳細過程,文中將實現(xiàn)的方法介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • nginx:413 Request Entity Too Large的處理辦法--修改 PHP上傳文件大小

    nginx:413 Request Entity Too Large的處理辦法--修改 PHP上傳文件大小

    在用 phpMyAdmin 進行 sql 數(shù)據(jù)庫導入的時候,經(jīng)常需要上傳比較大的 sql 數(shù)據(jù)文件,而這時會常碰見 nginx報錯:413 Request Entity Too Large。解決此問題,根據(jù)上傳數(shù)據(jù)文件的大小進行修改處理
    2014-06-06
  • nginx配置https加密訪問的詳細教程

    nginx配置https加密訪問的詳細教程

    這篇文章主要介紹了nginx配置https加密訪問的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11

最新評論