00.课程介绍部分
1.nginx服务企业配置方法
网站日志信息配置方法
2.nginx服务location配置 匹配URI
3.nginx服务rewrite配置 跳转
4.nginx服务访问流量控制
01.课程知识回顾
1.如何实现使用nginx部署多个网站页面 www blog bbs (多个虚拟机配置)
写出多个配置文件 --> 分别创建站点目录/首页文件 --> 配置本地hosts信息
2.网站页面访问方式
基于ip地址访问 --> 涉及到IP地址修改必须重启不能reload
基于域名访问 --> 配置文件配好后直接访问即可
基于端口访问 --> 修改配置文件 改端口后需 www.xxxxx:端口号 即可看见
3.利用nginx搭建数据共享服务器
在站点目录创建共享数据资源
必须删除首页文件
修改配置文件 autoindex on;
4.网站页面安全访问控制
a 根据用户的IP地址做限制 allow(允许) deny(禁止)
b 根据认证方式进行访问控制 location模块下写
auth_basic "oldboy";
auth_basic_user_file /etc/nginx/password.txt
htpasswd -bc /etc/nginx/password.txt xxx xxxxxx
5.访问网页连接线监控功能
可以实现查看用户访问连接数的信息
编辑配置文件 /etc/nginx/conf.d/status.conf
stub_status; ---开启监控功能
本地域名解析,即可查看
02. nginx服务访问流量控制
网站受到攻击,使网站压力过大
方式一: 基于IP地址连接数进行控制
说明: 控制一个源IP地址只能建立1个连接
http_limit_conn_module 模块名称
配置指令信息:
Syntax: 1
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;
}
03.nginx服务程序日志说明
1.访问日志:记录访问网站用户信息
访问日志如何配置:
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" ????
2.错误日志:记录服务运行状态信息/记录网站访问错误的信息
错误日志如何配置:
error_log /var/log/nginx/error.log warn; 指定日志保存路径/指定记录日志级别
常见调试/运行状态信息
debug 调试级别 最低级别记录的信息更多
info 信息级别
notice 通知级别
warn 警告级别(建议) 一般设置为中间级别即可
产生信息表示服务运行异常
error 错误级别
crit 严重的错误级别
alert 非常严重的错误级别
emerg 灾难级别 最高级别记录的信息更少
04.课程知识总结说明:
1.nginx网站流量访问控制
a 基于源ip地址连接数进行控制
b 基于源ip地址请求数进行控制
2.nginx网站日志功能配置
a 访问日志配置方法(日志格式信息)
b 错误日志配置方法(错误日志级别)
3.如何进行压力测试
yum install -y httpd-tools
ab -c 指定并发数量 -n 共发送多少请求 http://www.oldboy.com/
作业:
01. 三个网站都有自己的访问日志
www网站 --- www_access.log
bbs网站 --- bbs_access.log
blog网站 --- blog_access.log
02. 如何统计一天网站上传消耗的流量
1M网络流量
1M数据存储
awk '{sum=sum+$10}END{print sum*8/1024}' /var/log/nginx/www.log
sum*8=bit
sum*8/1024=kb