HTTP 核心配置指令中提供了基本的禁止访问、传输限速、内部访问控制等功能配置。配置指令如下表所示。
名称 | 请求方法排除限制指令 |
---|---|
指令 | limit_except |
作用域 | http, server, location |
默认值 | -- |
指令说明 | 对指定方法以外的所有请求方法进行限定 |
配置样例如下:
http{
limit_except GET {
allow 192.168.1.0/24; # 允许192.168.1.0/24范围的IP使用非GET的方法
deny all; # 禁止其他所有来源IP的非GET请求
}
}
名称 | 组合授权控制指令 |
---|---|
指令 | satisfy |
作用域 | http, server, location |
默认值 | all |
指令值选项 | all 或 any |
指令说明 | 默认情况下,在响应客户端请求时,当 ngx_http_access_module、ngx_http_auth_basic_module、ngx_http_auth_request_module、ngx_http_auth_jwt_module 模块被限定的访问控制条件都符合时,才允许授权访问。当指令值为 any 时,ngx_http_access_module、ngx_http_auth_basic_module、ngx_http_auth_request_module、ngx_http_auth_jwt_module 模块的访问控制条件,符合任意一个,则认为可以授权访问 |
配置样例如下:
location / {
satisfy any;
allow 192.168.1.0/32;
deny all;
auth_basic "closed site";
auth_basic_user_file conf/htpasswd;
}
名称 | 内部访问指令 |
---|---|
指令 | internal |
作用域 | http, server, location |
默认值 | -- |
指令说明 | 限定 location 的访问路径来源为内部访问请求,否则返回响应状态码 404 |
1) Nginx 限定以下几种类型为内部访问。
2) 内部请求的最大访问次数是 10 次,以防错误配置引发内部循环请求,超过限定次数将返回响应状态码 500。
配置样例如下:
error_page 404 /404.html;
location = /404.html {
internal;
}
名称 | 响应限速指令 |
---|---|
指令 | limit_rate |
作用域 | http, server, location |
默认值 | 0 |
指令说明 | 服务端响应请求后,被限定传输速率的大小。速率是以字节/秒为单位指定的,0 值表示禁用速率限制 |
配置样例如下:
server {
location /flv/ {
flv; limit_rate_after 500k; # 当传输速率到500KB/s时执行限速
limit_rate 50k; # 限速速率为50KB/s
}
}
响应速率也可以在 proxy_pass 的响应头属性 X-Accel-Limit-Rate 字段中设定;可以通过 proxy_ignore_headers、fastcgi_ignore_headers、uwsgi_ignore_headers 和 scgi_ignore_headers 指令禁用此项功能;在 Nginx 1.17.0 以后的版本中,参数值可以是变量。
map $slow $rate {
1 4k;
2 8k;
}
limit_rate $rate;
名称 | 响应最大值后限速指令 |
---|---|
指令 | limit_rate_after |
作用域 | http, server, location |
默认值 | 0 |
指令说明 | 服务端响应请求后,当向客户端的传输速率达到指定值时,按照响应限速指令进行限速 |
配置样例如下:
location /flv/ {
flv;
limit_rate_after 500k;
limit_rate 50k;
}