请求限制
请求限制 limit_req_module 比连接限制更优化,由于一个连接可以被多次复用。
1. limit_req_zone
首先需要在 http
作用域定义 limit_req_zone
。
Syntax: limit_req_zone key zone=name:size rate=rate [sync];
Default: —
Context: http
# Example
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
2. limit_req
再在指定的作用域启用。
Syntax: limit_req zone=name [burst=number] [nodelay | delay=number];
Default: —
Context: http, server, location
# Example
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
location /search/ {
limit_req zone=one burst=5;
}
limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;
limit_req_zone $server_name zone=perserver:10m rate=10r/s;
server {
limit_req zone=perip burst=5 nodelay;
limit_req zone=perserver burst=10;
}
$binary_remote_addr
相对 remote_addr
占用的空间更少。
连接限制
limit_conn_module 步骤基本与请求限制一致。
1. limit_conn_zone
Syntax: limit_conn_zone key zone=name:size;
Default: —
Context: http
# Example
limit_conn_zone $binary_remote_addr zone=addr:10m;
2. limit_zone
Syntax: limit_zone name $variable size;
Default: —
Context: http
# Example
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server {
limit_conn perip 10;
limit_conn perserver 100;
}
访问 IP 限制
access_module 可用来限制访问的 IP,用法比较简单。
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
# Example
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_module 可以为路径添加用户密码访问,可配合 IP 限制使用。
1. 生成密码
# 生成密码工具 htpasswd
# -b 参数为 在一行输入用户名和密码,而非根据提示输入密码
# -c 参数为 创建一个加密文件(注意已有则覆盖),即增加用户时无需指定
htpasswd -bc /etc/nginx/auth_conf hzqq 123
# 若缺乏依赖则提示,安装即可
# centos 下
yum install httpd-tools
# ubuntu 下
apt install apache2-utils
cat /etc/nginx/auth_conf # 验证
2. 限制说明
Syntax: auth_basic string | off;
Default: auth_basic off;
Context: http, server, location, limit_except
Syntax: auth_basic_user_file file;
Default: —
Context: http, server, location, limit_except
# Example
location / {
auth_basic "请输入用户名、密码";
auth_basic_user_file auth_conf;
}
禁止ip
#禁止单个ip
deny IP;
#禁止一个网段
deny subnet;
允许单个ip
allow IP;
允许一个网段
allow subnet;
# 禁止所有ip
deny all;
# 允许所有ip
allow all;
- 首先我们需要新建一个禁止ip的配置文件 ipblacklist.conf,在新建的 ipblacklist.conf文件里填写需要禁止访问的IP
deny 1.1.1.1;
deny 1.1.1.0/24/
- 保存文件,并把配置文件使用“ include”添加到Nginx配置文件 在http配置节点内添加以下代码
include ipblacklist.conf;
3. 保存nginx.conf配置文件。测试现在修改的配置文件是否合法
/usr/local/nginx/sbin/nginx -t
- 配置文件正确会输出
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful
- 如果配置文件没有问题就可以执行 reload 让Nginx重新加载配置文件。
/usr/local/nginx/sbin/nginx -s reload