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

首先需要設定索引文法,這裡可以看一下官方文檔
2:先進入/etc/nginx/conf.d中
建立一個新的配置檔案
再在/code1中建立10個檔案,檢視效果
網頁效果如下圖
3:如果想實作,輸入域名能看到頁面,但是在域名後加一個down就會顯示檔案目錄,怎麼做呢?
首先需要建立兩個location
(二):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
再次通路這個down目錄就會被拒絕
(三):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的狀态監控
會記錄多少人通路我,連接配接我,請求我
使用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
一般企業會進行對curl指令結果進行取值,進而進行監控
(五):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下定義
定義好後然後調用
limit_req zone=req_zone; 也是可以在http,server,location中使用
在浏覽器頁面進行Ctrl+f5強制重新整理,會變成大面積報錯,隻有一個成功
是以還有幾個參數需要介紹一下
定義時加上這幾個參數
limit_req zone=req_zone burst=3 nodelay;
其中burst=3表示同一時刻請求時,延遲增加處理三個,nodelay表示直接傳回503錯誤,這也就相當于一秒鐘請求4個,原來是1個
(六):Nginx Location(重要)
location比對的優先級 = > ^~ > ~ > ~* > /