5.1频率限制
连接频率限制 -limit_conn_module
请求频率限制 -limit_req_module
场景描述:
Http协议的连接和请求,是在TCP进行三次握手之后才进行的http(req,resp),最后才是客户端和服务端不断的发送FIN和ACK包(请求)来保持连接的状态的
5.1.1连接限制语法
5.1.2请求限制语法
key表示客户端的地址,通常用$binary_remote_addr来表示,其中remote_addr比binary_remote_addr多10个字节
rate 表示频率 rate=1/s; 表示所有的请求每秒一个
注: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
location ~ ^/admin.html {//模式匹配 拦截 http://120.79.165.122/admin.html
root /usr/local/nginx/app/code;
deny 120.230.139.44 //现在 120.230.139.44 (笔者自己笔记本ip)不能访问
allow all; //允许其他的能访问
index index.html index.htm;
}
5.2.2 http_access_module局限性
当客户端访问Nginx时,通过中间件代理的方式,改变了自己的Ip,这个时候就不能对客户端的ip进行限制了。
解决方式:
- 采用别的HTTP头信息控制访问,如http_x_forwarded_for
- 结果geo模块作
- 通过HTTP自定义变量出传递(定义一个规定的http变量)
http_x_forwarded_for=Client IP,Proxy(1),Proxy(2)
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 查看用户信息