日志切割就是把系统的日志以天为单位进行存放,即每一天的日志都分开放
企业当中每天都要备份昨天的日志,然后生成一个新的日志记录今天的
如果不做日志切割,当日志文件很大的时候,vim打开的时候可能卡死等等
而且排错的时候也简单,是哪天的问题查哪天的日志
在生产环境中每一天的日志文件都是要打包备份的
如果每天都手动的去截取日志,重命名这样就很不方便,所以我们编写一个脚本并建立一个定时任务来进行这些工作
日志切割是自动执行的,写在crotab定时任务里面,写一个脚本实现
查看nginx服务器的日志都有哪些类型
cd /usr/local/lnmp/nginx/logs
日志名称 日志类型
access.log 存放成功访问nginx服务器的日志信息
error.log 存放访问nginx服务器失败的日志信息
nginx.pid 严格来说这个不算日志,里面存放的是nginx进程的pid
1)先查看nginx的access.log日志大小
cd /usr/local/lnmp/nginx/logs
[root@server1 logs]# du -sh access.log
20K access.log
2)多次请求页面,再查看日志大小
[kiosk@foundation0 ~]$ ab -c 1 -n 100000 http://www.yyz.org/index.html
##1表示1个并发,100000次请求
3)再看日志大小
[root@server1 logs]# du -sh access.log
16M access.log
4)接下来手动进行日志切割
[root@server1 logs]# mv access.log `date +%F -d -1day`_access.log ##因为第二天肯定是备份前一天的日志
[root@server1 logs]# /usr/local/lnmp/nginx/sbin/nginx -s reopen
2019-10-22_access.log access.log error.log nginx.pid
将之前的日志即2019-10-22_access.log这个文件切割出去,然后将新的日志存放在access.log这个文件里
(1)在nginx服务的日志目录下面编写脚本
(2)、给予其执行权限
chmod +x backup.sh
(3)、给切割出来的旧日志建立目录oldlogs
(4)、执行脚本,查看日志是否自动切割备份
./backup.sh
(5)、编写定时任务,使实际企业当中的服务器每天晚上的24:00准时去进行日志切割
crontab -e
1)系统启动脚本都在/usr/lib/systemd/system目录下,但是自己配置的服务官方不建议放在此目录下,放在/etc/systemd/system目录下
2)参考httpd服务的启动脚本作参考,来实现nginx的启动
cp /usr/lib/systemd/system/httpd.service /etc/systemd/system/nginx.service
vim /etc/systemd/system/nginx.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/lnmp/nginx/logs/nginx.pid
ExecStart=/usr/local/lnmp/nginx/sbin/nginx
ExecReload=/usr/local/lnmp/nginx/sbin/nginx -s reload
ExecStop=/usr/local/lnmp/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
3)用原来的方式关闭nginx
4)启动nginx
systemctl start nginx
systemctl status nginx
这样就比之前的方便多了
1)最大连接数
worker_connections 65535 ##当nginx做反向代理时,这个数字要除以2来看最大连接数
该参数在nginx的配置文件里
然后查看系统最大打开文件数:
sysctl -a | grep file
fs.file-max = 200603 ##最大打开文件数为200603,一个连接也是一个文件(socket文件,linux思想一切皆文件)
然后修改系统参数:
vim /etc/security/limits.conf
nginx - nofile 65535 ##加在最后
新建nginx用户:
useradd -M -d /usr/local/nginx -s /sbin/nologin nginx
我们经常会遇到这种情况,服务器流量异常,负载过大等等。对于大流量恶意的攻击访问,会带来带宽的浪费,服务器压力,影响业务,往往考虑对同一个ip的连接数,并发数进行限制
限制链接数 ##可以参考官网:
docs.nginx.com --> NGINX Plus --> Admin Guide --> Security Controls --> Limiting Access to Proxied HTTP Resources
vim nginx.conf
...ls
keepalive_timeout 65;
#gzip on;
#limit_conn_zone 用来限制同一时间连接数,即并发限制
#limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 “leaky bucket”
$binary_remote_addr是限制同一客户端ip地址
zone=one:10m表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次信息
# 定义一个名为addr的limit_conn_zone $binary_remote_addr是限制同一客户端ip地址
#以下两条语句写在server之上
limit_conn_zone $binary_remote_addr zone=addr:10m; #大小是10M内存 10M的内存来对于IP传输开销
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; #1s中不超过一个请求
...
location / {
root html;
index index.html index.htm;
}
location /download {
limit_conn addr 1; ##只能一个并发,多了会报错
limit_rate 50k; ##限制带宽,每秒最多50k
}
上面三个参数一个一个演示
演示前的准备:
mkdir /usr/local/lnmp/nginx/html/download
给download目录里放一个vim.jpg(约400k)