Nginx基於客戶端請求頭的訪問分類
Nginx從0.8.37版本開始提供一個叫做ngx_http_split_clients_module模組,由該模組的功能從它名字就很容易看出,因此,它的功能就是用基於某些條件(例如,IP地址、頭、cookie,等等)將客戶端訪問的資源分開。
配置示例
http { split_clients "${remote_addr}AAA" $variant { 0.5% .one; 2.0% .two; * ""; }
server { location / { index index${variant}.html;
|
指 令
該模組只提供了1條命令。
指令名稱:split_clients
功 能:該指令用於對雜湊源資料計算,從1.0.1版本之後的Nginx,該指令對源字串進行計算時使用的不再是CRC32,而使用改為使用MurmurHash2演算法,然後會根據雜湊的百分比作為員的值。
語 法: split_clients source_hash $variable { ... }
默 認 值: none
使用環境: http
變 量
該模組提供了一個變數,那就是$variant。
變數名稱:$variant
功 能:通過它的值就會代表著訪問者最終訪問的去處。
使用例項
在Nginx伺服器的配置檔案中新增以下配置內容:
http { include mime.types; default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
log_format custom $time_local | $server_name | $request_length | $bytes_sent | $remote_addr | $variant;
split_clients "${remote_addr}" $variant { 10% .1; 20% .2; 30% .4; 40% .5; * ""; }
server { listen 80; server_name www.xx.com;
access_log logs/custom.log custom;
location / { root html; index index${variant}.html; }
…… } |
Nginx的web目錄結構:
[root@mail html]# tree -L 1 . |-- member |-- simg0 |-- upload …… |-- files |-- index.html |-- index.1.html |-- index.2.html |-- index.3.html |-- index.4.html `-- index.5.html
8 directories, 12 files |
我們看監控一下Nginx的訪問日誌
[root@mail logs]# tail -f custom.log 03/Sep/2011:12:15:41 +0800|www.xx.com|321|887|100.100.170.248|.4 03/Sep/2011:12:15:46 +0800|www.xx.com|319|887|192.168.3.248|.5 03/Sep/2011:12:16:00 +0800|www.xx.com|615|389|61.135.169.106|.2 03/Sep/2011:12:18:27 +0800|www.xx.com|565|389|23.123.123.128|.2 03/Sep/2011:12:19:26 +0800|www.xx.com|563|887|192.168.1.164|.4 03/Sep/2011:12:20:09 +0800|www.xx.com|563|887|192.168.4.88|.5 03/Sep/2011:12:24:11 +0800|www.xx.com|566|887|119.184.137.242|.5 03/Sep/2011:12:25:13 +0800|www.xx.com|566|887|173.242.125.196|.5 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27043155/viewspace-732986/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- nginx截獲客戶端請求Nginx客戶端
- nginx 處理客戶端請求的完整過程Nginx客戶端
- FastDFS-nginx外掛作為FastDFS客戶端訪問ASTNginx客戶端
- 禁止頻繁請求的ip訪問nginxNginx
- 基於Microsoft visual c++ 6.0實現客戶端HTTP的Get、Post請求ROSC++客戶端HTTP
- 技術基礎 | 改進版的Apache Cassandra客戶端請求路由Apache客戶端路由
- 遠端客戶端 訪問 ASM 例項客戶端ASM
- 服務端如何獲取客戶端請求IP地址服務端客戶端
- 客戶端訪問POP3--SMTP客戶端
- 從客戶端向服務端發起請求(3種)客戶端服務端
- 請求方式的分類
- android客戶端向伺服器傳送請求中文亂碼的問Android客戶端伺服器
- Android客戶端請求伺服器端的詳細解釋Android客戶端伺服器
- Docker部署mysql並提供客戶端訪問DockerMySql客戶端
- 客戶端 post ,get 訪問伺服器客戶端伺服器
- 處理nginx訪問日誌,篩選時間大於1秒的請求Nginx
- 客戶端PC入網後DHCP請求過程(轉)客戶端
- 搭建本地server,響應Android客戶端HTTP請求ServerAndroid客戶端HTTP
- 限制訪問Oracle客戶端IP方法總結Oracle客戶端
- 基於WebSocket的modbus通訊(二)- 客戶端Web客戶端
- ExchangeServer2010客戶端的安全訪問Server客戶端
- FtpWebRequest類_ftp客戶端FTPWeb客戶端
- rsync備份【基於客戶端與服務端】客戶端服務端
- Go-Micro客戶端請求報500錯誤的解決方法Go客戶端
- 用VB編寫OPC客戶端訪問WINCC (轉)客戶端
- 使用nginx的tcp負載解決exchange2016的客戶端訪問負載NginxTCP負載客戶端
- SpringBoot系列之服務端解析客戶端國際化請求Spring Boot服務端客戶端
- 網站提示400 - 請求錯誤,伺服器無法理解客戶端的請求怎麼辦網站伺服器客戶端
- 基於小程式請求介面 wx.request 封裝的類 axios 請求封裝iOS
- 客戶端(windows)訪問FTP伺服器遇到的問題(總結)客戶端WindowsFTP伺服器
- Nginx配置ssl_client_certificate客戶端認證問題Nginxclient客戶端
- 3 個很酷的基於文字的郵件客戶端客戶端
- 基於c語言的TCP客戶端、服務端基礎程式碼C語言TCP客戶端服務端
- Nginx轉發導致請求頭丟失Nginx
- 用whistle和proxifier抓包除錯任意客戶端的網路請求除錯客戶端
- EVE-NG初次啟動及WEB客戶端訪問Web客戶端
- 基於node的tcp客戶端和服務端的簡單通訊TCP客戶端服務端
- 基於Dtm分散式事務管理的php客戶端分散式PHP客戶端