Nginx常用配置,建议收藏!

2024-01-28 10:03:15 浏览数 (2)

Nginx 日志切割-手动

现有的日志都会存在access.log文件中,但是随着时间的推移,这个文件的内容会越来越多,体积会越来越大,不便于运维人员查看,所以我们可以通过把这个大的日志文件切割为多份不同的小文件作为日志,切割规则可以以天为单位,如果每天有几百G或者几个T的日志的话,则可以按需以每半天或者每小时对日志切割一下。

具体步骤如下:

  1. 创建一个shelll 可执行文件:cut_my_log.sh,内容为:
代码语言:javascript复制
#!/bin/bash 
LOG_PATH=/var/log/nginx/
RECORD_TIME= $(date - d "yesterday"   %Y-%m-%d  %H:%M)
PID= /var/run/nginx/nginx. pid
mv ${LOG_ PATH} /access.log  $ (LOG_PATH}/access.$(RECORD_ TIME}.log 
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log 

#向Nginx 主进程发送信号,用于重新打开日志文件
kill - USR1 `cat SPID`
  1. 为cut_my_log.sh添加可执行的权限: chmod x cut _my_log.sh
  2. 测试日志切割后的结果: . /cut_my_log.sh

Nginx 日志切割-定时

使用定时任务

  1. 安装定时任务: yum install crontabs
  2. crontab -e编辑并且添加一行新的任务: */1 * * * * /usr/ local/nginx/sbin/cut_my_log.sh
  3. 重启定时任务: service crond restart

附:常用定时任务命令:

代码语言:javascript复制
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond re load //重新载入配置
crontab - e //编辑任务
crontab - t //查看任务列表

定时任务表达式: Cron表达式是,分为5或6个域,每个域代表一个含义,如下所示:

含义

星期几

年(可选)

取值范围

0 ~ 59

0 ~ 23

1 ~ 31

1 ~ 12

1~ 7

2019/2020/2022/2023/…

常用表达式:

  • 每分钟执行:*/1 * * * *
  • 每日凌晨(每天晚上23:59)执行:59 23 * * *
  • 每日凌晨1点执行:0 1 * * *

root与alias

假如服务器路径为:/home/potter/files/img/face.png

  • root路径完全匹配访问: 配置的时候为:
代码语言:javascript复制
location /potter {
	 root /home 
}

用户访问的时候请求为:url:port/potter/files/img/face.png

  • alias 可以为你的路径做一个别名,对用户透明配置的时候为:
代码语言:javascript复制
location /hello {
	 alias /home/potter 
}

用户访问的时候请求为:url:port/hello/files/img/face.png,如此相当于为目录potter 做一个自定义的别名。

location 的匹配规则

  • 空格:默认匹配,普通匹配
代码语言:javascript复制
location / {
	 root /home;
}
  • =:精确匹配
代码语言:javascript复制
location = /potter/img/face1.png {
	root / home;
}
  • ~*:匹配正则表达式,不区分大小写
代码语言:javascript复制
#符合图片的显示
location ~* .(GIF|png|jpg|jpeg) {
	root /home; 
}
  • ~:匹配正则表达式,区分大小写
代码语言:javascript复制
#GIF必须大写才能匹配到
location ~ .(GIF|png|jpg|jpeg) {
	root /home; 
}
  • ^~:以某个字符路径开头
代码语言:javascript复制
location ^~ /potter/img {
	root / home;
}

Nginx 跨域配置支持

代码语言:javascript复制
#允许跨域请求的域,*代表所有
add_header 	'Access-Contro l-Allow-origin' 	*;
#允许带上cookie 请求
add_header 	'Access-Contro l-Allow-credentials'	t'rue';
 #允许请求的方法,比如GET/POST/PUT/DELETE 
add_header 	'Access-contro l-Allow-Methods`	*;
#允许请求的header 
add_header 	'Access-control-Allow-headers'	*;

Nginx 防盗链配置支持

代码语言:javascript复制
#对源站点验证
valid_referers *.pottercoding.cn:
#非法引入会进入下方判断
if($invalid_referer) {
	return 404:
}

0 人点赞