nginx限流与配置管理


Nginx作为web服务器的一些功能

一、nginx限流

在nginx发布目录下创建一个目录,并存储一张照片进行测试

创建目录
[root@server1 html]# pwd
/usr/local/nginx/html
[root@server1 html]# ls
50x.html  index.html
[root@server1 html]# mkdir download

从宿主机传一张大小为828k的照片
[root@server1 html]# cd download/
[root@server1 download]# ls
1.jpg
[root@server1 download]# du -h 1.jpg 
828K	1.jpg

rehl8安装图像处理工具ImageMagick

[root@wlb file_recv]# yum install -y ImageMagick ImageMagick-devel.x86_64
[root@wlb file_recv]# cd nginx/picture/
[root@wlb picture]# ls
vim_command.png vim.png vim键图.png
[root@wlb picture]# display vim.png

linux devel是什么意思
在这里插入图片描述

在这里插入图片描述

从限制并发量到限制请求数,再到队列

1.控制单ip并发连接数

[root@server1 conf]# pwd
/usr/local/nginx/conf
[root@server1 conf]# vim nginx.conf

http模块添加:
 limit_conn_zone $binary_remote_addr zone=addr:10m;
 $binary_remote_addr 表示通过remote_addr这个标识来做限制,nginx的内部变量,取的是远端客户端的地址
 zone=addr:10m	表示创建一个大小为10M,名字为addr的内存区域
 可以多开几个内存区域进行不同限制

location /download {
limit_conn addr 1;	#限制并发连接数为1
}

在这里插入图片描述在这里插入图片描述

*压力测试

[root@westos_student73 mnt]# ab -c10 -n10 http://172.25.254.11/download/1.jpg 
#通过客户端进行ab压测,-c表示并发数,-n表示访问十次、
[root@server1 conf]# cat /usr/local/nginx/logs/access.log 
#nginx查看访问日志

客户端
在这里插入图片描述
在这里插入图片描述

HTTP状态码,可以很快地找到问题所在点,比如200表示访问成功,300表示重定向,400表示是客户端问题,请求资源不存在或者错误,500表示是服务端问题。
HTTP状态码
HTTP状态码详解

在这里插入图片描述

2.控制单位时间的请求数

在这里插入图片描述
在这里插入图片描述
测试

[root@westos_student73 mnt]# ab -c1 -n10 http://172.25.254.11/download/1.jpg
并发数改为1,防止前面设置影响实验结果

设置生效前
在这里插入图片描述
在这里插入图片描述设置生效后

[root@server1 conf]# nginx -t
nginx检测是否有设置错误
[root@server1 conf]# nginx -s reload
nginx重新加载

在这里插入图片描述
在这里插入图片描述[root@server1 conf]# cat /usr/local/nginx/logs/access.log
在这里插入图片描述

[root@server1 conf]#   > /usr/local/nginx/logs/access.log 
清空一下访问日志
[root@server1 conf]# cat /usr/local/nginx/logs/access.log 

排队设置
在这里插入图片描述测试效果
在这里插入图片描述

限流是为了一些情况下,服务器不崩溃

在这里插入图片描述在这里插入图片描述nodelay与brust参数共同作用时,表示不延迟处理队列中的请求后,就不再接受请求。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.限制带宽

在这里插入图片描述
测试

在这里插入图片描述

二、nginx配置管理

1.自动索引

用处:下载方便
location /download {
	autoindex on;
	#打开自动索引
}

在这里插入图片描述在这里插入图片描述在这里插入图片描述效果

在这里插入图片描述

2.Nginx expire(到期)缓存配置

缓存可以降低网络带宽,加速用户访问,一般主要用于静态空间,网站图片不怎么修改的地方,比如网站公司介绍
location ~ .*\.(gif|jpg|png)$ {
             expires 365d;
             root html;
}

在这里插入图片描述

在这里插入图片描述

3.日志轮询(日志截断备份)

大量访问会导致ningx日志增长特别块,一些门户型站点,比如阿里每天的匹配量过亿。所以日志需要经常截断。

创建脚本
[root@server1 logs]# cat /opt/nginx_log.sh 
#!/bin/bash
cd /usr/local/nginx/logs && mv access.log access_$(date +%F -d -1day).log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

赋予执行权限
[root@server1 logs]# chmod +x /opt/nginx_log.sh 

加入crontab定时任务
[root@server1 logs]# crontab -e
[root@server1 logs]# crontab -l
00 00 * * * /opt/nginx_log.sh &> /dev/null

为了安全,日志目录不给nginx用户访问权限
chmod -R 700 /usr/local/nginx/logs

创建脚本
在这里插入图片描述在这里插入图片描述在这里插入图片描述加入定时任务
在这里插入图片描述

在这里插入图片描述

4.状态模块激活

location /status {
		stub_status on;
}

在这里插入图片描述在这里插入图片描述

效果
在这里插入图片描述

5.禁用不必要日志

 location /status {
		stub_status on;
		access_log off;
}

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

6.站点目录和文件的访问限制

loaction ~ ^/images/.*\.(sh|php)${
		deny all;
}
^表示匹配以什么开头,.*\.匹配的是以什么结尾
上边表示的是在/images/目录下以sh或者php结尾的文件都不能访问

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

6.中文乱码

charset utf-8;

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述

7.限制ip

location / {
		deny 172.24.254.73;
		allow 172.25.254.11/24;
		deny all;
}

if ($remote_addr=172.25.254.73){
		return 403;
}
#使用正则表达式,如果远程主机是172.25.254.73访问,返回403,和deny类似。

8.ssl模块

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

三、goaccess日志可视化

软件安装

下载安装包
[root@server1 ~]#ssh root@172.25.254.73
[root@westos_student73 ~]# cd /mnt/
[root@westos_student73 mnt]# scp goaccess-1.4.tar.gz root@172.25.254.11:/root

[root@server1 ~]# tar zxf goaccess-1.4.tar.gz #解压
[root@server1 ~]# cd goaccess-1.4
[root@server1 goaccess-1.4]# ./configure  --enable-utf8 --enable-geoip=legacy
[root@server1 goaccess-1.4]# yum search geoip
[root@server1 goaccess-1.4]# rpm -q GeoIP.x86_64

[root@server1 goaccess-1.4]# ssh root@172.25.254.73
[root@westos_student73 ~]# cd /mnt/
#下载所需软件
[root@westos_student73 mnt]# scp GeoIP-devel-1.5.0-13.el7.x86_64.rpm  root@172.25.254.11/root
[root@server1 ~]# rpm -ivh GeoIP-devel-1.5.0-13.el7.x86_64.rpm #安装

[root@server1 goaccess-1.4]# ./configure  --enable-utf8 --enable-geoip=legacy
[root@server1 goaccess-1.4]# yum provides */ncursesw
[root@server1 goaccess-1.4]# yum install -y ncurses-devel
[root@server1 goaccess-1.4]# ./configure  --enable-utf8 --enable-geoip=legacy

[root@server1 goaccess-1.4]# make
[root@server1 goaccess-1.4]# make install

[root@server1 html]#goaccess /usr/local/nginx/logs/access.log -o /usr/local/nginx/html/report.html --log-format=COMBINED --real-time-html
ctrl + z
[root@server1 html]# bg #打入后台运行,会时刻监控日志变化

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述展示效果
在这里插入图片描述
测试

[root@westos_student73 mnt]# ab -c10 -n200 http://172.25.254.11/index.html

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多于少的区别

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值