天天看點

Nginx負載均衡子產品(二)

(一):Nginx的目錄索引

1:當使用者通路Nginx搭建的網站,當網站的location中定義的/路徑中的index.html頁面找不到,那麼就會報Not found錯誤,是以建立目錄索引就是解決這個問題的,當使用者通路不到html頁面時,Nginx會根據自己設定的索引傳回一個目錄清單!

也可以配置内網YUM倉庫

例如:

Nginx負載均衡子產品(二)

首先需要設定索引文法,這裡可以看一下官方文檔

Nginx負載均衡子產品(二)

2:先進入/etc/nginx/conf.d中

建立一個新的配置檔案

Nginx負載均衡子產品(二)

再在/code1中建立10個檔案,檢視效果

Nginx負載均衡子產品(二)

網頁效果如下圖

Nginx負載均衡子產品(二)

3:如果想實作,輸入域名能看到頁面,但是在域名後加一個down就會顯示檔案目錄,怎麼做呢?

首先需要建立兩個location

Nginx負載均衡子產品(二)
Nginx負載均衡子產品(二)

(二):Nginx的通路控制

比如除了10.0.0.1這個位址不能通路我,其他所有位址都能通路我

deny 10.0.0.1/32
allow all;           

比如隻允許10.0.0.1這個位址能夠通路我,其他所有的位址都不能通路我

allow 10.0.0.1/32;
deny all;           

如果是希望整個網段可以通路我

10.0.0.0/24;           

本機的位址改為10.0.0.100後

Nginx負載均衡子產品(二)

在配置檔案裡面寫入控制通路語句,并重新開機nginx

Nginx負載均衡子產品(二)

再次通路這個down目錄就會被拒絕

Nginx負載均衡子產品(二)

(三):Nginx的資源限制

資源限制也就是設定驗證,使用者想通路我背景,那麼就需要輸入使用者名和密碼才可以進入,通常和通路控制一起設定,雙安全認證

首先看一下設定密碼的格式

location / {
    auth_basic   "closed site";    #描述資訊
    auth_basic_user_file 路徑;
}           

驗證的密碼放在一個檔案裡面,和rsync守護程序類似

密碼裡面的書寫格式是,并且密碼必須是進過加密的,是以可以使用htpasswd進行加密

username:password           

是以下載下傳htpasswd密碼加密包

yum -y install httpd-tools           

使用htpasswd的-c參數建立密碼檔案,并設定使用者名和密碼

htpasswd -c /etc/nginx/auth_conf oldboy 回車
輸入密碼           
Nginx負載均衡子產品(二)

再寫入配置檔案中

Nginx負載均衡子產品(二)

再在浏覽器上進行通路,就會提示輸入密碼

Nginx負載均衡子產品(二)

(四):Nginx的狀态監控

會記錄多少人通路我,連接配接我,請求我

使用stub_status子產品,但是這種一般需要直接編譯才可以使用

是以yum安裝的需要使用nginx -V檢視有沒有這個子產品,有就直接使用

location  /nginx_status {
    stub_status;
}           

然後進入浏覽器輸入、位址/nginx_status 就可以看到,也叫nginx的七種狀态

失敗的連接配接數是總的TCP連接配接數減去以處理的請求accepts-handled

也可以使用httpd軟體包自帶的模拟請求工具ab指令 -c是并發,-n請求數

ab -n1000 -c100 http://10.0.0.7/nginx_status           

一般這種狀态監控不會給外人通路,給測試人員本地檢視即可,是以要加本地通路規則

location /nginx_status {
                stub_status;
                allow 127.0.0.1;
                deny all;
}           

然後使用curl指令去通路

curl 127.0.0.1/nginx_status           
Nginx負載均衡子產品(二)

一般企業會進行對curl指令結果進行取值,進而進行監控

Nginx負載均衡子產品(二)

(五):Nginx的通路限制

針對大流量通路,惡意通路,帶來的影響是嚴重消耗帶寬,需要采取措施進行限制

主要針對連接配接數限制,和請求數進行限制

1:對連接配接數限制:對連接配接數限制并不是特别有效,因為一個連接配接建立可以包含多個請求,還是無法進行對資源擷取的限制

​ 首先進行設定指令,文法如下,

其中key表示日志中記錄到的通路位址,一般key=$remote_addr或者也可以寫$binary_remote_addr,二者的差別就是占用的位元組大小不一樣,前者占用15個位元組,後者占用4個位元組左右!

name表示自己定義的指令名稱,

size表示在記憶體中開辟的記憶體大小

limit_conn_zone key zone=name:size;  指令隻能在http中設定           

​ 設定完指令後進行調用,文法如下,其中number表示限制的最大連接配接數是多少,超過這個值,那就直接傳回503錯誤

limit_conn zone number;    調用指令可以在http,server,location中使用           

2:對請求數限制:對請求數限制是使用最多的

首先進行設定指令,文法如下

其中rate表示每秒請求速率

limit_req_zone key zone=name:size rate=rate;  隻能在http下定義           
Nginx負載均衡子產品(二)

定義好後然後調用

limit_req zone=req_zone;   也是可以在http,server,location中使用           
Nginx負載均衡子產品(二)

在浏覽器頁面進行Ctrl+f5強制重新整理,會變成大面積報錯,隻有一個成功

Nginx負載均衡子產品(二)

是以還有幾個參數需要介紹一下

定義時加上這幾個參數

limit_req zone=req_zone burst=3 nodelay;           

其中burst=3表示同一時刻請求時,延遲增加處理三個,nodelay表示直接傳回503錯誤,這也就相當于一秒鐘請求4個,原來是1個

Nginx負載均衡子產品(二)
Nginx負載均衡子產品(二)

(六):Nginx Location(重要)

location比對的優先級 = > ^~ > ~ > ~* > /

繼續閱讀