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