1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

nginx中基于jsessionid的限速策略

基于jsessionid的nginx限速策略

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

nginx中基于jsessionid的限速策略

限速策略配置方式

由于$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