最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx動(dòng)態(tài)添加訪問(wèn)白名單的方法

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

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

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

  • nginx啟用訪問(wèn)白名單
  • 客戶打開(kāi)指定網(wǎng)址自動(dòng)添加訪問(wèn)白名單
  • 為網(wǎng)址添加簡(jiǎn)單的認(rèn)證
  • 每?jī)蓚€(gè)小時(shí)自動(dòng)恢復(fù)默認(rèn)白名單,刪除臨時(shí)IP訪問(wèn)權(quán)限

一、nginx配置訪問(wèn)白名單

這個(gè)就比較簡(jiǎn)單了,簡(jiǎn)單貼一下配置:

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

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

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

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

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

二、使用LUA自動(dòng)添加白名單

nginx需配合lua模塊才能實(shí)現(xiàn)這個(gè)功能,新建一個(gè)location,客戶訪問(wèn)這個(gè)location時(shí),使用lua拿到客戶IP并調(diào)用shell腳本寫(xiě)入ip_white.conf中,寫(xiě)入后自動(dòng)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("添加白名單完成,有效時(shí)間最長(zhǎng)為2小時(shí)");
';
}

/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

該腳本有兩個(gè)功能:

  • 自動(dòng)加IP并reload nginx
  • 恢復(fù)默認(rèn)的ip_white.conf文件,配合定時(shí)任務(wù)可以取消非默認(rèn)IP的訪問(wèn)權(quán)限

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

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

nginx啟用lua模塊見(jiàn)nginx啟用lua模塊

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

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

復(fù)制代碼 代碼如下:

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

賬號(hào):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代碼略......

四、自動(dòng)恢復(fù)默認(rèn)IP白名單

通過(guò)web獲得訪問(wèn)權(quán)限的IP,設(shè)置訪問(wèn)有效期為兩小時(shí),我是通過(guò)每?jī)尚r(shí)恢復(fù)一次默認(rèn)的IP白名單文件實(shí)現(xiàn)。把ip_white.conf文件復(fù)制一份作為默認(rèn)的白名單模版:

復(fù)制代碼 代碼如下:

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

使用定時(shí)任務(wù)每?jī)尚r(shí)通用上面的shell腳本來(lái)恢復(fù),定時(shí)任務(wù)為:

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Nginx 13: Permission denied 解決方案

    詳解Nginx 13: Permission denied 解決方案

    這篇文章主要介紹了詳解Nginx 13: Permission denied 解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Keepalived+Nginx雙機(jī)配置小結(jié)

    Keepalived+Nginx雙機(jī)配置小結(jié)

    本文主要介紹了Keepalived+Nginx雙機(jī)配置小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • 使用goaccess分析nginx日志的詳細(xì)方法

    使用goaccess分析nginx日志的詳細(xì)方法

    goaccess 工具提供快速、多樣的HTTP狀態(tài)統(tǒng)計(jì),可以令管理員不再糾結(jié)于統(tǒng)計(jì)各類數(shù)據(jù),和繁雜的指令以及一大堆管道/正則表達(dá)式說(shuō)再見(jiàn),今天通過(guò)本文給大家介紹goaccess 分析nginx 日志的方法,需要的朋友一起看看吧
    2021-07-07
  • Nginx與Tomcat實(shí)現(xiàn)動(dòng)靜態(tài)分離和負(fù)載均衡

    Nginx與Tomcat實(shí)現(xiàn)動(dòng)靜態(tài)分離和負(fù)載均衡

    本篇文章主要介紹了Nginx與Tomcat實(shí)現(xiàn)動(dòng)靜態(tài)分離和負(fù)載均衡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • Nginx如何配置前端后端服務(wù)

    Nginx如何配置前端后端服務(wù)

    本文介紹了如何配置Nginx作為前端靜態(tài)資源服務(wù)器和反向代理服務(wù)器以連接后端應(yīng)用,配置步驟包括設(shè)置Nginx的基本配置語(yǔ)法和結(jié)構(gòu),配置Nginx作為前端靜態(tài)資源服務(wù)器和反向代理服務(wù)器,測(cè)試和優(yōu)化Nginx配置,以及提供了一個(gè)示例配置
    2025-01-01
  • Centos7下安裝部署nginx的三種方式詳解

    Centos7下安裝部署nginx的三種方式詳解

    Nginx?(engine?x)?是一個(gè)高性能的HTTP和反向代理web服務(wù)器,這篇文章主要為大家介紹了Centos7下安裝部署nginx的三種方式,希望對(duì)大家有所幫助
    2023-08-08
  • nginx虛擬主機(jī)防webshell完美版

    nginx虛擬主機(jī)防webshell完美版

    nginx虛擬主機(jī)防webshell完美版,使用nginx的朋友可以參考下。
    2010-11-11
  • 詳解實(shí)現(xiàn)Nginx+Tomcat實(shí)現(xiàn)單IP、多域名、多站點(diǎn)的訪問(wèn)

    詳解實(shí)現(xiàn)Nginx+Tomcat實(shí)現(xiàn)單IP、多域名、多站點(diǎn)的訪問(wèn)

    這篇文章主要介紹了詳解實(shí)現(xiàn)Nginx+Tomcat實(shí)現(xiàn)單IP、多域名、多站點(diǎn)的訪問(wèn)的相關(guān)資料,這里提供實(shí)例幫助到大家實(shí)現(xiàn)改功能,希望能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • nginx有哪些常規(guī)調(diào)優(yōu)手段詳解

    nginx有哪些常規(guī)調(diào)優(yōu)手段詳解

    性能調(diào)優(yōu)就是用更少的資源提供更好的服務(wù),成本利益最大化,下面這篇文章主要給大家介紹了關(guān)于nginx有哪些常規(guī)調(diào)優(yōu)手段的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 如何在centos上使用yum安裝rabbitmq-server

    如何在centos上使用yum安裝rabbitmq-server

    這篇文章主要介紹了如何在centos上使用yum安裝rabbitmq-server,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

陆良县| 柯坪县| 安康市| 文水县| 定边县| 琼海市| 大邑县| 天水市| 历史| 楚雄市| 永昌县| 郯城县| 得荣县| 安多县| 兴隆县| 新津县| 疏附县| 资溪县| 邯郸市| 宾川县| 长沙市| 鹤岗市| 永济市| 黄陵县| 安阳县| 莒南县| 阿拉尔市| 锡林浩特市| 本溪市| 岳普湖县| 肇东市| 文山县| 沧源| 即墨市| 辽阳县| 永仁县| 承德县| 隆林| 阳信县| 乌审旗| 昌吉市|