文章目录
在接下来的几个实战demo中,实验环境保持不变
172.25.2.10 server1 (主nginx)
172.25.2.11 server2
172.25.2.250 真机 (测试设备)
并且关闭三台主机的防火墙,selinx
日志的切割
因为nginx access日志文件会保存所有客户端的连接信息,普通网站的每天请求量很大,所以需要每天切割日志,将原来的日志备份,同时又在新的一天,reopen新的日志文件.
手动切割
1.server1中
2.在真机测试时
3.4.
5.200表示成功
6.错误日志中的内容
7.模拟大规模访问服务器
8.在serevr2中查看日志
9.备份前一天的日志
脚本方式切割
cd /usr/local/nginx/logs
mkdir oldlogs
vim old.sh
1 #!/bin/bash
2 LOGS_PATH=/usr/local/nginx/logs/oldlogs
3 CUR_LOGS_PATH=/usr/local/nginx/logs
4 YESTERDAY=$(date +%F -d -1day)
5
6 mv $CUR_LOGS_PATH/access.log $LOGS_PATH/${YESTERDAY}_access.log
7 mv $CUR_LOGS_PATH/error.log $LOGS_PATH/${YESTERDAY}_error.log
8
向nginx主进程发送USR1信号,重新打开日志文件,否则会继续往mv后的文件
写数据的。
原因在于:linux系统中,内核是根据文件描述符来找文件的。
如果不这样操作导致日志切割失败。
9 kill -USR1 $(cat /usr/local/nginx/logs nginx.pid)
nginx.pid 里面存放的是nginx进程的pid
USR1信号 解释 USR1亦通常被用来告知应用程序重载配置文件;
例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改
chmod +x old.sh
sh old.sh
ll
编写定时任务,使实际企业当中的服务器每天晚上的24:00准时去进行日志切割
crontab -e
写入:
0 0 * * * /bin/bash /usr/local/nginx/logs/backup.sh
crontab -l #显示定时任务
限制用户的访问
1.在serevr1中
2.在真机下测试第一个参数
在serevr1中查看日志时,发现503报错
3.在serevr1中限制第二个带宽
在真机测试
在serevr1中查看日志时,发现503报错
获取真实客户端的ip
1.在server2中
2.2.在真机中
3.在真实服务器中
发现代理服务器的请求,而不是真实客户端真机的
4.在代理服务器serevr2中
5.在真机测试
6.在真实服务器查看日志,发现是真实客户端发来的请求