5.1频率限制

连接频率限制 -limit_conn_module
请求频率限制 -limit_req_module
场景描述:
Http协议的连接和请求,是在TCP进行三次握手之后才进行的http(req,resp),最后才是客户端和服务端不断的发送FIN和ACK包(请求)来保持连接的状态的
image.png
image.png

5.1.1连接限制语法

image.png

5.1.2请求限制语法

key表示客户端的地址,通常用$binary_remote_addr来表示,其中remote_addr比binary_remote_addr多10个字节
rate 表示频率 rate=1/s; 表示所有的请求每秒一个
image.png

注:ab -n 50 -c 20 http://
50是指请求次数 20是指并发数量;通过ab工具来测试配置后的限制情况

5.2访问控制

基于IP的访问控制 -http_access_module (允许或者不允许哪些IP来访问)
基于用户的信任登录 -http_auth_basic_module (通过基本认证)

5.2.1 http_access_module

//配置允许的
Syntax: allow address |CIDR(网段)|unix:| all;
default: -
Context: http,server,location,limit_except
//配置不允许的
Syntax: deny address |CIDR(网段)|unix:| all;
default: -
Context: http,server,location,limit_except

  1. location ~ ^/admin.html {//模式匹配 拦截 http://120.79.165.122/admin.html
  2. root /usr/local/nginx/app/code;
  3. deny 120.230.139.44 //现在 120.230.139.44 (笔者自己笔记本ip)不能访问
  4. allow all; //允许其他的能访问
  5. index index.html index.htm;
  6. }

5.2.2 http_access_module局限性

当客户端访问Nginx时,通过中间件代理的方式,改变了自己的Ip,这个时候就不能对客户端的ip进行限制了。
解决方式:

  1. 采用别的HTTP头信息控制访问,如http_x_forwarded_for
  2. 结果geo模块作
  3. 通过HTTP自定义变量出传递(定义一个规定的http变量)

http_x_forwarded_for=Client IP,Proxy(1),Proxy(2)
image.png

5.2.3 http_auth_basic_module

Syntax: auth_basic string | off
Default: auth_basic off;
Context: http,server,location,limit_except
//file 一个文件路径,文件保存用户名和密码信息
Syntax: auth_basic_user_file file;
Default: -
Context: http,server,location,limit_except

5.2.4 生成用户文件

htpasswd -c ./auth_conf username 生成用户信息文件 auth_conf
more auth_conf 查看用户信息
image.png
image.png

5.2.5 http_auth_basic_module局限性

  1. 用户信息依赖文件方式
  2. 操作管理机械,效率低下

    5.2..6解决方案

  3. Nginx结合LUA实现高效验证

  4. Nginx和LDAP打通,利用nginx-auth-ldap模块