基于jsessionid的nginx限速策略
你好,我是本际云服务器推荐网的小编小本本。公司的某个系统会出现同一用户大量并发访问的状况,决定采用F5后添加nginx反向代理进行限速。首先基于$http_x_forwarded_for变量进行访问限速,但该方式无法对单个用户访问进行限速,故采用$http_cookie的方式进行限速。

限速策略配置方式
由于$http_cookie包含许多信息,需要从中截取JSESSIONID的值作为限速依据。具体配置方案如下:
http{
#gzip on;
#限速策略
limit_req_zone $jsvalue zone=req:100m rate=10r/m;
limit_conn_zone $jsvalue zone=reqconn:100m;
upstream shsnc{
sticky;
server IP:PORT;
server IP:PORT;
server IP:PORT;
}
server{
listen 80;
#截取设置限速jsessionid字符串
set $jsvalue "";
if ($http_cookie ~* "JSESSIONID=(.+?)(?=;)"){
set $jsvalue $1;
}
#仅对访问频繁的页面加以限速,aa表示页面URL的关键字段
location ~ .* (aa|bb) .*{
proxy_pass http://shsnc;
limit_req zone=req zone burst=5;
limit_conn reqconn 10;
}
}
}
解决问题和总结
通过以上配置,成功解决了业务出现短时间内同一用户大量并发访问的问题,并且采用截取JSESSIONID的方式进行限速,有效解决了无法对单个用户进行限速的问题,在相应方面得到了提升。
以上是本际云服务器推荐网的小编介绍,更多精彩干货分享请关注我们的名片。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6089.html
