場景:
限制最大連接數(shù)300,單url每秒最多處理100個請求初肉,同客戶端最大請求數(shù)不超過5
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 限制單個url每秒只能處理100個請求
limit_req_zone $uri zone=api_read:20m rate=100r/s;
# 限制單個服務(wù)器
limit_conn_zone $server_name zone=perserver:10m;
# 限制同一個客戶端的請求數(shù)
limit_conn_zone $binary_remote_addr zone=perip:10m;
gzip on;
upstream web-app {
server localhost:8882;
}
server {
listen 8000;
limit_conn perip 5;
limit_conn perserver 300;
access_log logs/access.log;
error_log logs/error.log;
location ^~ /web-app/ {
proxy_pass $scheme://web-app;
#bust=20表示這個配置的意思是設(shè)置一個大小為5的緩沖區(qū)當有大量請求(爆發(fā))過來時妇菱,超過了訪問頻次限制的請求可以先放到這個緩沖區(qū)內(nèi)
limit_req zone=api_read burst=20 nodelay;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}