摘要:指令說明當超過限制后,返回的響應狀態碼,默認是,現在你就知道上面為什么會返回服務暫時不可用例子同時限制和虛擬主機最大并發連接根據請求參數來限制請求設置默認值模塊的使用和模塊差不多,這里暫時不在講述,可查看官方文檔參考文檔
需求
秒殺、搶購并發限制、隊列緩沖
下載帶寬限制
防止攻擊
nginx連接數限制模塊說明:nginx有很多模塊、模塊下面又分很多指令,下面就說說limit_conn_zone和limit_conn兩指令1、limit_conn_zone
語法:
Syntax: limit_conn_zone key zone=name:size; Default: — Context: http
nginx配置分為三個段:http、server、location,大概格式如下:
http { server { listen 80; server_name www.tomener.com tomener.com; location / { root /var/www/tomener; index index.php index.html index.htm; set $limit_key $binary_remote_addr; set $limit_number 10; } } }
nginx配置中可以設置變量,例如上面的$limit_key和$limit_number連個變量,后面是變量的值,好了這些都是對不太了解nginx配置的朋友的一些說明、具體可以搜索一下。
看上面的語法,limit_conn_zone只能用在http段,例如:
http { limit_conn_zone $binary_remote_addr zone=addr:10m; server { listen 80; server_name www.tomener.com tomener.com; location / { root /var/www/tomener; index index.php index.html index.htm; limit_conn addr 5; #是限制每個IP只能發起5個連接 limit_rate 100k; #限速為 100KB/秒 } } }
分析:
Syntax: limit_conn_zone key zone=name:size;
對于關系:
key => $binary_remote_addr #二進制的IP地址
name => addr #隨便取的一個名字,比如,你可以取成abc
size => 10m #空間大小,這里是10兆
一個二進制的ip地址在32位機器上占用32個字節,在64位機器上占用63個字節,那么10M可以存放多少呢,計算一下,10x1024x1024/32 = 327680,意思就是可以存放326780個ip地址(32位),64位可以存放163840個ip
1、key:鍵,可以說是一個規則,就是對客服端連接的一個標識,比如上面用的是IP地址,比如我們可以用$query_string,例如:/index.php?mp=138944093953,那我們就可以根據mp的值來限制連接數,更多的nginx內置變量請查看http://nginx.org/en/docs/varindex.html 2、zone:共享內存空間,作用:保存每個key對應的連接數 3、size:共享內存空間大小,如1M、10M、100K
當共享內存空間被耗盡,服務器將會對后續所有的請求返回 503 (Service Temporarily Unavailable) 錯誤
limit_conn指令Syntax: limit_conn zone number; Default: — Context: http, server, location
限制每個name對應客服端的連接數,比如上面的limit_conn addr 5;意思就是現在addr這個name對應的客服端的連接數,比如name對應的是45.168.68.202這個ip地址,那么這個ip最多有5個并發連接,那什么并發呢?像這樣的連接,請求到達并已經讀取了請求頭信息到響應頭信息發送完畢,在這個過程中的連接,當一個客服端的并發連接達到我們設置的5個以上時,會返回503 (Service Temporarily Unavailable) 錯誤
這里,小伙伴對這個zone估計還是有一些疑問,有疑問可以在下面評論,大家一起討論,比如,有人可能會問,一個客服端占用5個,那么327680只能容納65536個客服端,那么第65537個客服端就會返回503錯誤
limit_conn_log_level指令Syntax: limit_conn_log_level info | notice | warn | error; Default: limit_conn_log_level error; Context: http, server, location
說明:當達到最大限制連接數后,記錄日志的等級。
limit_conn_status指令Syntax: limit_conn_status code; Default: limit_conn_status 503; Context: http, server, location
說明:當超過限制后,返回的響應狀態碼,默認是503,現在你就知道上面為什么會返回503(Service Temporarily Unavailable)服務暫時不可用
例子:
1、同時限制ip和虛擬主機最大并發連接
http { limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; server { location / { limit_conn perip 10; limit_conn perserver 1000; } } }
2、根據請求參數來限制
#請求:http://www.tomener.com/item.html?mp=1967464354&id=43566929485 limit_conn_zone $mp_limit_key zone=mp:10m; server { set $mp_limit_key $binary_remote_addr; #key設置默認值 if ( $query_string ~ .*mp=(d+).* ) { set $mp_limit_key $1; } location / { limit_conn mp 10; } }ngx_http_limit_req_module limit_req_zone
Syntax: limit_req_zone key zone=name:size rate=rate; Default: — Context: http
ngx_http_limit_req_module模塊的使用和ngx_http_limit_conn_module模塊差不多,這里暫時不在講述,可查看官方文檔:
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
參考文檔:
https://www.ttlsa.com/nginx/nginx-limited-connection-number-ngx_http_limit_conn_module-module/
https://www.ttlsa.com/nginx/nginx-limiting-the-number-of-requests-ngx_http_limit_req_module-module/
http://blog.csdn.net/shootyou/article/details/46813967
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39259.html
摘要:定義運行的用戶和用戶組進程數,建議設置為等于總核心數。開啟限制連接數的時候需要使用的負載均衡,是權重,可以根據機器配置定義權重。本地動靜分離反向代理配置所有的頁面均交由或處理所有靜態文件由直接讀取不經過或 定義Nginx運行的用戶和用戶組 user www www; nginx進程數,建議設置為等于CPU總核心數。 worker_processes 8; 全局錯誤日志定義類型,[ de...
摘要:定義運行的用戶和用戶組進程數,建議設置為等于總核心數。開啟限制連接數的時候需要使用的負載均衡,是權重,可以根據機器配置定義權重。本地動靜分離反向代理配置所有的頁面均交由或處理所有靜態文件由直接讀取不經過或 定義Nginx運行的用戶和用戶組 user www www; nginx進程數,建議設置為等于CPU總核心數。 worker_processes 8; 全局錯誤日志定義類型,[ de...
摘要:定義運行的用戶和用戶組如果所有用戶和用戶組不相符可以使用命令進程數,建議設置為等于總核心數。注意如果圖片顯示不正常把這個改成。本地動靜分離反向代理配置所有的頁面均交由或處理所有靜態文件由直接讀取不經過或 定義Nginx運行的用戶和用戶組 user www www; //如果所有用戶和用戶組不相符 可以使用chown命令 nginx進程數,建議設置為等于CPU總核心數。 worker_p...
摘要:轉載自北京流浪兒自己加了隱藏入口文件的配置定義運行的用戶和用戶組進程數,建議設置為等于總核心數。開啟目錄列表訪問,合適下載服務器,默認關閉。本地動靜分離反向代理配置所有的頁面均交由或處理所有靜態文件由直接讀取不經過或 轉載自北京流浪兒自己加了隱藏入口文件的配置 #定義Nginx運行的用戶和用戶組 user www www; #nginx進程數,建議設置為等于CPU總核心數。 wor...
摘要:每個打開文件描述符的最大數量限制。多長時間檢查一次緩存的有效信息指令中的參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的。如果沒有匹配的,則默認使用配置文件中第一個。 頂級配置 #定義 Nginx 運行的用戶和用戶組 user nginx; #進程文件 pid /var/run/nginx.pid; #錯誤日志位置和級別,debug、info、not...
閱讀 1619·2021-11-11 10:59
閱讀 2624·2021-09-04 16:40
閱讀 3650·2021-09-04 16:40
閱讀 2979·2021-07-30 15:30
閱讀 1615·2021-07-26 22:03
閱讀 3164·2019-08-30 13:20
閱讀 2225·2019-08-29 18:31
閱讀 439·2019-08-29 12:21