Der Code lautet wie folgt:
limit_req_zone $server_name zone=sname:10m rate=1r/s; #限制服务器每秒只能有一次访问成功 #limit_req_zone $binary_remote_addr zone=one:3m rate=1r/s; #限制ip,每秒只能访问一次 #limit_req_zone $binary_remote_addr $uri zone=two:3m rate=1r/s; #限制ip和路径不带参数, #limit_req_zone $binary_remote_addr $request_uri zone=thre:3m rate=1r/s; #限制ip和带参数的路径 server { listen 80; server_name www.abc.com; location / { include host/proxy.cnf; proxy_pass http://backend; } location /api/createorder { limit_req zone=sname; #不带突发,只能有一次正常请求 limit_req_status 503; #设置返回的状态码是503 #limit_req zone=sname burst=5 nodelay; #最大并发是5,并且实时处理 include host/proxy.cnf; proxy_pass http://backend; error_page 503 =200 /50x.html; #这里很重要,可以将错误的状态码503,返回结果的时候是200 } location = /50x.html { if ($http_user_agent ~* "mobile|android|iphone|iphone|ios|ios"){ #default_type application/json; return 200 '{"msg": "活动过于火爆,请稍后重试!","data": {},"code": -1}'; #设置移动端返回错误的信息显示 } root html; #如果是pc端返回一个html页面 } }
Wichtiger Punkt: Unter normalen Umständen, wenn das aktuelle Limit festgelegt ist, lautet der Rückgabestatuscode 503. Dies ist für das mobile Endgerät sinnvoll, selbst wenn Sie JSON-Daten zurückgeben, der Client jedoch nicht Erkennen Sie es. Setzen Sie den Statuscode über error_page 403 =200 /50x.html. Das Obige verwendet nur ngx_limit_req_module, und das Modul ngx_limit_conn_module kann ebenfalls verwendet werden.
Besonders wenn einige Beratungswebsites von Crawlern angegriffen werden, kann der Server von Crawlern zerstört werden (dies ist bei kleinen Websites der Fall)
Was sollen wir also tun? Wir können dazu Variablen verwenden#全局配置 limit_req_zone $spider zone=spider:60m rate=200r/m; #限制爬虫每分钟只能跑200次 #某个server中 limit_req zone=spider burst=5 nodelay; if ($http_user_agent ~* “spider|bot”) { set $spider $http_user_agent; #设置变量,进入这里的就进行限速 }
Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie das aktuelle Limit für den Nginx-Rush-Kauf. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!