您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“nginx的限流配置過(guò)程”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
limit_req zone=req_zone;
嚴(yán)格依照在limti_req_zone中配置的rate來(lái)處理請(qǐng)求
超過(guò)rate處理能力范圍的,直接drop
表現(xiàn)為對(duì)收到的請(qǐng)求無(wú)延時(shí)
limit_req zone=req_zone burst=5;
依照在limti_req_zone中配置的rate來(lái)處理請(qǐng)求
同時(shí)設(shè)置了一個(gè)大小為5的緩沖隊(duì)列,在緩沖隊(duì)列中的請(qǐng)求會(huì)等待慢慢處理
超過(guò)了burst緩沖隊(duì)列長(zhǎng)度和rate處理能力的請(qǐng)求被直接丟棄
表現(xiàn)為對(duì)收到的請(qǐng)求有延時(shí)
limit_req zone=req_zone burst=5 nodelay;
依照在limti_req_zone中配置的rate來(lái)處理請(qǐng)求
同時(shí)設(shè)置了一個(gè)大小為5的緩沖隊(duì)列,當(dāng)請(qǐng)求到來(lái)時(shí),會(huì)爆發(fā)出一個(gè)峰值處理能力,對(duì)于峰值處理數(shù)量之外的請(qǐng)求,直接丟棄
在完成峰值請(qǐng)求之后,緩沖隊(duì)列不能再放入請(qǐng)求。如果rate=10r/s,且這段時(shí)間內(nèi)沒(méi)有請(qǐng)求再到來(lái),則每6 s 緩沖隊(duì)列就能回復(fù)一個(gè)緩沖請(qǐng)求的能力,直到回復(fù)到能緩沖5個(gè)請(qǐng)求位置。
load_module modules/ngx_stream_module.so; #動(dòng)態(tài)加載模塊,必須寫(xiě)道開(kāi)頭
user nginx; #使用useradd nginx 添加一個(gè)nginx用戶
worker_processes 4; #cpu核心數(shù) * 2
worker_rlimit_nofile 102400; #配置nginx打開(kāi)最大文件數(shù) (每個(gè)工作進(jìn)程綁定一個(gè)cpu,worker_cpu_affinity配置)
worker_cpu_affinity 0001 0010 0100 1000; #工作進(jìn)程使用哪個(gè)cpu的核心 (以四核為例) 0001是4核的第一個(gè)核心 0010是4核的第二個(gè)核心
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 10240;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main; #在server虛擬目錄里面配置日志,這里是全局日志
sendfile on;
#tcp_nopush on;
server_tokens off; #錯(cuò)誤的時(shí)候關(guān)閉輸出版本號(hào)
#keepalive_timeout 0;
keepalive_timeout 30;
gzip on; #壓縮會(huì)占用cpu
gzip_buffers 4 16k;
gzip_comp_level 3; #壓縮等級(jí)
gzip_disable "MSIE[1-6]"; #ie瀏覽器1-6禁用gzip
gzip_min_length 1k;
gzip_http_version 1.0;
gzip_types text/plaion application/html application/css application/js; #可以壓縮的文件類(lèi)型
gzip_vary on; #根據(jù)http頭判斷是否支持壓縮
client_max_body_size 8m; #默認(rèn)允許客戶端最大上傳文件大小
#限流
#limit_conn_zone $binary_remote_addr zone=addr:10m; #并發(fā)限制(同時(shí)啟用一個(gè))
limit_req_zone $binary_remote_addr zone=qps:10m rate=1r/s; #請(qǐng)求限制 每秒鐘處理一個(gè)請(qǐng)求
limit_conn_log_level error;
limit_conn_status 503; #超出限制時(shí),返回狀態(tài)碼
server{
#limit_conn addr 1; #并發(fā)限制設(shè)置為1,是為了測(cè)試 addr是zone空間在53行(同時(shí)啟用一個(gè))
#limit_req zone=qps; #請(qǐng)求限制
limit_req zone=qps burset=1 nodelay; #請(qǐng)求限制()
}
#限流end
}
“nginx的限流配置過(guò)程”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。