本篇內(nèi)容介紹了“nginx的限流配置過程”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了宜陽免費建站歡迎大家使用!
limit_req zone=req_zone;
嚴格依照在limti_req_zone中配置的rate來處理請求
超過rate處理能力范圍的,直接drop
表現(xiàn)為對收到的請求無延時
limit_req zone=req_zone burst=5;
依照在limti_req_zone中配置的rate來處理請求
同時設(shè)置了一個大小為5的緩沖隊列,在緩沖隊列中的請求會等待慢慢處理
超過了burst緩沖隊列長度和rate處理能力的請求被直接丟棄
表現(xiàn)為對收到的請求有延時
limit_req zone=req_zone burst=5 nodelay;
依照在limti_req_zone中配置的rate來處理請求
同時設(shè)置了一個大小為5的緩沖隊列,當請求到來時,會爆發(fā)出一個峰值處理能力,對于峰值處理數(shù)量之外的請求,直接丟棄
在完成峰值請求之后,緩沖隊列不能再放入請求。如果rate=10r/s,且這段時間內(nèi)沒有請求再到來,則每6 s 緩沖隊列就能回復(fù)一個緩沖請求的能力,直到回復(fù)到能緩沖5個請求位置。
load_module modules/ngx_stream_module.so; #動態(tài)加載模塊,必須寫道開頭
user nginx; #使用useradd nginx 添加一個nginx用戶
worker_processes 4; #cpu核心數(shù) * 2
worker_rlimit_nofile 102400; #配置nginx打開最大文件數(shù) (每個工作進程綁定一個cpu,worker_cpu_affinity配置)
worker_cpu_affinity 0001 0010 0100 1000; #工作進程使用哪個cpu的核心 (以四核為例) 0001是4核的第一個核心 0010是4核的第二個核心
#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; #錯誤的時候關(guān)閉輸出版本號
#keepalive_timeout 0;
keepalive_timeout 30;
gzip on; #壓縮會占用cpu
gzip_buffers 4 16k;
gzip_comp_level 3; #壓縮等級
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; #可以壓縮的文件類型
gzip_vary on; #根據(jù)http頭判斷是否支持壓縮
client_max_body_size 8m; #默認允許客戶端最大上傳文件大小
#限流
#limit_conn_zone $binary_remote_addr zone=addr:10m; #并發(fā)限制(同時啟用一個)
limit_req_zone $binary_remote_addr zone=qps:10m rate=1r/s; #請求限制 每秒鐘處理一個請求
limit_conn_log_level error;
limit_conn_status 503; #超出限制時,返回狀態(tài)碼
server{
#limit_conn addr 1; #并發(fā)限制設(shè)置為1,是為了測試 addr是zone空間在53行(同時啟用一個)
#limit_req zone=qps; #請求限制
limit_req zone=qps burset=1 nodelay; #請求限制()
}
#限流end
}
“nginx的限流配置過程”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!