溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

nginx的限流配置過(guò)程

發(fā)布時(shí)間:2021-09-17 15:33:47 來(lái)源:億速云 閱讀:125 作者:chen 欄目:建站服務(wù)器

本篇內(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í)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI