请求与连接区别
connection是连接:即常说的tcp连接,三次握手,状态机request是请求:例如http请求,无状态的协议request是必须建立在connection之上
connection限制客户端并发连接数
Nginx默认是有这个模块,可以通过--without-http_limit_conn_module 禁用
由于限制客户端需要每个worker子进程对客户端有标识,所以需要用到共享内存。
常用指令
limit_conn_zone
上下文 http写法 limit_conn_zone $binary_remote_addr zone=addr:10m通常1m共享内存空间大小都能维护3万多并发连接 10m已经很大了 addr是名称binary_remote_addr 相比 remote_addr 空间使用更少 前者4 后面7-8字节
limit_conn_status
上下文:http、server、locationlimit_conn_status code默认状态码 limit_conn_status 503 超过连接数后返回的状态码
limit_conn_log_level
上下文:http、server、locationlimit_conn_ log_level info|notice|warn|error默认error 当限速行为发生时会产生日志
limit_conn
limit_conn 上面的名称 限速多少个客户端并发连接
限制的只是并发连接才会出现。
request限制客户端请求平均速率
写法跟conn一样
Nginx默认是有这个模块,可以通过--without-http_limit_req_module 禁用
由于限制客户端需要每个worker子进程对客户端有标识,所以需要用到共享内存。
使用 限流算法是leaky_bucket算法,漏桶算法,使流量平滑进入
limit_req_zone $binary_remote_addr zone=addr:10m rate=2r/m一分钟处理两个请求limit_req_log_level 限速日志级别limit_conn_status 状态码limit_req zone=addr burst=7 nodelay;设置了 rate 可以不设置burst=7 nodelay 连续请求
限定指定ip 访问
allow 允许deny 拒绝 会直接返回403 forbiddenhttp、server、location、limit_except 上下文可以组合编写,从上到下范围筛选location/{deny 192.168.1.1;allow 192.168.1.0/24;allow 10.1.1.0/16;allow 2001:0db8::/32;deny all;}
限制特定用户访问auth_basic模块
默认已经有了的模块:可以通过--without-http_auth_basic_module禁用
语法:auth_basic 浏览器提示语|off;默认值:auth_basic off;上下文:http、server、location、limit_except语法:auth_basic_user_file 配置的密钥文件绝对地址;上下文:http、server、location、limit_except
制作用户名密码
可执行程序:htpasswd所属软件包:httpd-tools生成新的密码文件:htpasswd -bc encrypt_pass jack 123456添加新用户密码:htpasswd -b encrypt_pass mike 123456
给予HTTP响应码做权限
需要增加模块--with-http_auth_request_module
语法:auth_request uri|off;默认值:auth_request off;上下文:http、server、locationlocation /private/{auth_request /auth;}location /auth {//授权服务器,根据返回状态码做后续操作 成功状态200proxy_pass http://127.0.0.1:8080/verify;// 带上请求信息可以proxy_pass_request_body off;proxy_set_header Content-Length "";proxy_set_header X-Original-URI $request_uri;}
