nginx 訪問限制與訪問控制的實現(xiàn)
一、nginx 訪問限制
1、ngx_http_limit_req_module
(1) 作用:限制單位時間內(nèi)來自特定IP的請求次數(shù)。
(2) 啟動請求頻率限制:
① 未限制情況下進行訪問:
安裝壓測工具:yum install -y httpd-tools
命令:ab -n 100 -c 10 http://a.com/
ab 是 apache 進行性能測試的工具 ;-n 100 -c 10:總共100次,分10次發(fā)送給 a.com
② 啟動限制,在主配置文件里定義限制規(guī)則:
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;
- limit_req_zone:定義限制規(guī)則
- $binary_remote_addr:遠程的客戶端地址
- zone=req_zone:10m 創(chuàng)建一個叫'req_zone'的存儲區(qū)域,并分配10M的內(nèi)存
- rate=1r/s:請求速率限制
在 a 網(wǎng)站的配置文件中引用限制規(guī)則:
③ 重啟服務(wù)并測試
觀察錯誤日志:
2023/09/14 21:06:02 [error] 3538#3538: *100 limiting requests, excess: 0.991 by zone "req_zone", client: 192.168.198.133, server: a.com, request: "GET / HTTP/1.0", host: "a.com"
④ ngx_http_limit_req_module 與 ngx_http_limit_conn_module 的區(qū)別:
ngx_http_limit_req_module:請求頻率限制,限制客戶端請求的速率;
ngx_http_limit_conn_module:連接頻率限制,限制某個 ip 同時建立的連接數(shù)量。
2、常見的網(wǎng)站壓力測試工具
① Apache JMeter:Apache JMeter是一個開源的Java應(yīng)用程序,用于執(zhí)行各種性能測試,包括負載測試、壓力測試、功能測試等。
② LoadRunner:HP LoadRunner是一款商業(yè)性能測試工具,用于模擬大規(guī)模用戶負載并監(jiān)測應(yīng)用程序性能
③ Gatling:Gatling是一個開源的性能測試工具,使用Scala編寫,專注于高并發(fā)場景。
④ Apache Benchmark (ab):Apache Benchmark是一個命令行工具,用于進行基本的HTTP壓力測試。它通常與Apache Web服務(wù)器一起使用,但也可用于測試其他Web服務(wù)器。
⑤ Locust:Locust是一個開源的Python性能測試工具,允許使用Python代碼定義和執(zhí)行負載測試場景。
⑥ Siege:Siege是一個開源的命令行工具,用于進行HTTP壓力測試。具有簡單的語法和配置,且易于使用。
二、nginx 訪問控制
1、基于主機(ip 訪問控制)
(1) 模塊:ngx_http_access_module
(2) 語法:
配置允許或禁止訪問的 ip 地址或網(wǎng)段
syntax: access_module [on | off] | deny address | allow address;
context: http, server, location, limit_except;
(3) 啟用控制
啟用訪問控制后,只有特定主機才能訪問 nginx 服務(wù)器。
觀察錯誤日志:
2023/09/14 23:24:04 [error] 4916#4916: *2 access forbidden by rule, client: 192.168.198.128, server: a.com, request: "GET /favicon.ico HTTP/1.1", host: "a.com"
2、基于用戶(username & password)
(1) 網(wǎng)站基礎(chǔ)認證模塊:ngx_http_auth_basic_module
(2) 語法:
獨立存儲一個加密文件,在服務(wù)器上調(diào)用加密文件
Syntax: auth_basic_user_file file;
Context: http, server, location, limit_except
(3) 啟用控制
① 創(chuàng)建認證文件:htpasswd -cm /etc/nginx/conf.d/passwd user10
- htpasswd:進行身份密碼驗證的命令行工具
- -cm:創(chuàng)建一個新的密碼文件
- /etc/nginx/conf.d/passwd user10:密碼文件的路徑和創(chuàng)建的用戶名
② 啟動認證
提示信息;認證文件路徑
auth_basic "nginx access test";
auth_basic_user_file /etc/nginx/conf.d/passwd;
③ 重啟并驗證
客戶機上訪問 a.com:
認證成功可進入 a 網(wǎng)站
若不進行身份驗證,則網(wǎng)站返回狀態(tài)碼 401(客戶端未提供有效身份信息)
三、HTTP 協(xié)議
1、HTTP簡介
(1) Hyper Text Transfer Protocol,超文本傳輸協(xié)議,是一種建立在TCP上的 請求-響應(yīng) 協(xié)議。
(2) 工作流程:客戶端發(fā)送一個HTTP請求,服務(wù)端收到請求之后,根據(jù)請求做出相應(yīng)的動作訪問服務(wù)器資源,最后發(fā)送HTTP響應(yīng)把結(jié)果返回給客戶端。
一個請求的開始到一個響應(yīng)的結(jié)束稱為事務(wù),當一個事務(wù)結(jié)束后會在服務(wù)端添加一條日志條目。
(3) 組件系統(tǒng):
① 客戶端:通常是 Web 瀏覽器,負責(zé)發(fā)送 HTTP 請求并接收 HTTP 響應(yīng);
② 服務(wù)器:接收來自客戶端的 HTTP 請求,處理請求并返回 HTTP 響應(yīng)。服務(wù)器通常由Web服務(wù)器軟件構(gòu)成,例如 Apache、Nginx 等;
③ Proxies/代理服務(wù)器:Proxies或代理服務(wù)器是介于客戶端和服務(wù)器之間的中間組件,用于處理HTTP請求和響應(yīng)。
(4) 報文:
① 請求報文:請求報文是客戶端向服務(wù)器發(fā)送的報文,請求報文由請求行、請求頭部和請求體三部分組成:
- 請求行:由請求方法字段、URL字段和HTTP協(xié)議版本字段3個字段組成,用空格分隔。例如,GET /index.html HTTP/1.1
GET:請求方法之一,當點擊網(wǎng)頁上的鏈接或者通過在瀏覽器的地址欄輸入網(wǎng)址來瀏覽網(wǎng)頁的,使用的都是GET方式;
POST:POST方法可以在請求中包含一個請求體,以表單的形式向服務(wù)器提交數(shù)據(jù)。
② 響應(yīng)報文:響應(yīng)報文是服務(wù)器對請求報文的響應(yīng)。響應(yīng)報文包括響應(yīng)行、響應(yīng)頭部和響應(yīng)體三部分。
- 響應(yīng)行:包含HTTP協(xié)議的版本、狀態(tài)碼和狀態(tài)消息。例如,“HTTP/1.1 200 OK”,其中HTTP/1.1是協(xié)議版本,200是狀態(tài)碼,OK是狀態(tài)消息。
2、URI
(1) URI 簡介
統(tǒng)一資源標識符 (Uniform Resource Identifier,或URI) ,HTTP 請求的內(nèi)容統(tǒng)稱為"資源",每個資源都由一個 URI 來進行標識,URI 包含 URL、URN。
(2) URL
統(tǒng)一資源定位符(Uniform Resource Locator),也稱為網(wǎng)頁地址,用于定位。
URL 格式:
① 協(xié)議:網(wǎng)站協(xié)議是互聯(lián)網(wǎng)上進行通訊、信息共享遵循的規(guī)則總稱。
超文本傳輸協(xié)議(HTTP)文件傳輸協(xié)議(FTP)遠程終端協(xié)議(Telnet)郵件處理協(xié)議(mailto)
② 主機:www.example.com(域名)或主機ip,表示向網(wǎng)絡(luò)上的哪臺主機發(fā)起請求。
③ 端口:表示訪問 web 服務(wù)器上的資源的入口,HTTP 為 80,HTTPS 為 443
④ 路徑:/path/to/file.html 是 web 服務(wù)器上存放資源的路徑
⑤ 查詢:?key1=value1&key2=value2 是提供給 Web 服務(wù)器的額外參數(shù),用 & 符號分隔的鍵/值對列表。
⑥ 片段:#SomewhereInTheDocument 是資源本身的某一部分的一個錨點。錨點代表資源內(nèi)的一種超鏈接,它給予瀏覽器跳轉(zhuǎn)到錨點指示的內(nèi)容。 例如,在HTML文檔上,瀏覽器將滾動到定義錨點的位置上。
到此這篇關(guān)于nginx 訪問限制與訪問控制的實現(xiàn)的文章就介紹到這了,更多相關(guān)nginx 訪問限制與訪問控制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx使用ngx_http_upstream_module實現(xiàn)負載均衡功能示例
本文主要介紹了Nginx使用ngx_http_upstream_module實現(xiàn)負載均衡功能示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Ubuntu上安裝Nginx服務(wù)器程序及簡單的環(huán)境配置小結(jié)
Nginx是一款高性能的異步非阻塞服務(wù)器應(yīng)用程序,人氣相當高,這里我們就來看一下在Ubuntu上安裝Nginx服務(wù)器程序及簡單的環(huán)境配置小結(jié):2016-07-07