Nginx实战demo(一)日志切割+限制用户的访问+获取真实客户端的ip

在接下来的几个实战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.在真实服务器查看日志,发现是真实客户端发来的请求
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

发布了264 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45649763/article/details/104518989