1. nginx服务访问流量控制
网站受到攻击,使网站压力过大
- 方式一: 基于IP地址连接数进行控制
说明: 控制一个源IP地址只能建立1个连接
- 使用模块
http_limit_conn_module
配置指令信息:
Syntax: limit_conn_zone key zone=name:size;
Default: —
Context: http
key: 变量信息,在连接建立后,收集什么信息做控制管理
· $remote_addr 变量的长度为7字节到15字节 存储状态在32位平台中占用32字节或64字节,在64位平台中占用64字节
。
· $binary_remote_addr 变量的长度是固定的4字节 存储状态在32位平台中占用32字节或64字节,在64位平台中占用64字节。
1M共享空间可以保存3.2万个32位的状态,1.6万个64位的状态。
zone: 定义共享存储空间
· name: 存储空间的名称信息
· size: 存储空间大小信息
配置指令信息:
Syntax: limit_conn zone number;
Default: —
Context: http, server, location
zone: 调用响应的存储空间
number: 限制存储空间源IP地址可以处理的数量
配置样例:
[root@web02 conf.d]# cat www.conf
limit_conn_zone $binary_remote_addr zone=oldboy:10m;
server {
listen 80;
server_name www.oldboy.com;
root /html/www;
index index.html;
limit_conn oldboy 1;
}
- 使用模块
http_limit_req_module
配置指令信息:
Syntax: limit_req_zone key zone=name:size rate=rate [sync];
Default: —
Context: http
key: 变量信息,在连接建立后,收集什么信息做控制管理
· $remote_addr 变量的长度为7字节到15字节 存储状态在32位平台中占用32字节或64字节,在64位平台中占用64字节
。
· $binary_remote_addr 变量的长度是固定的4字节 存储状态在32位平台中占用32字节或64字节,在64位平台中占用64字节。
1M共享空间可以保存3.2万个32位的状态,1.6万个64位的状态。
zone: 定义共享存储空间
· name: 存储空间的名称信息
· size: 存储空间大小信息
rate: 多个请求频次信息
配置指令信息
Syntax: limit_req zone=name [burst=number] [nodelay];
Default: —
Context: http, server, location
burst=number: 最大的请求阈值, 超过阈值请求都会进行控制
配置样例
[root@web02 conf.d]# cat www.conf
limit_req_zone $binary_remote_addr zone=creq:10m rate=1r/s;
server {
listen 80;
server_name www.oldboy.com;
root /html/www;
index index.html;
limit_req zone=creq burst=10;
}
2. nginx服务程序日志说明
- 访问日志:
记录访问网站用户信息
访问日志如何配置:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
定义日志信息格式
'$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
定义日志保存路径
- 访问日志的信息说明:
$remote_addr
客户端源IP地址
$remote_user
记录网站认证用户名称信息
[$time_local]
客户端访问网站页面时间信息
"$request"
记录请求行信息
$status
服务端响应的状态码信息
$body_bytes_sent
响应报文的主体内容大小信息(字节)
"$http_referer"
记录跳转到网站,链接地址
"$http_user_agent"
记录访问者客户端信息
"$http_x_forwarded_for"
记录客户端真实地址
- 错误日志:
记录服务运行状态信息/记录网站访问错误的信息
错误日志如何配置:
error_log /var/log/nginx/error.log warn;
指定日志保存路径/指定记录日志级别
- 常见调试/运行状态信息
debug
调试级别 对低级别记录信息更多
info
信息级别
notice
通知级别
warn
警告级别(建议)
error
错误界别 ***
crit
严重的错误级别
alert
非常验证的错误级别
emerg
灾难级别 最高级别记录的信息更少