一 计划任务 && sh脚本做日志切割
crontab -e 计划任务
*/1 * * * * sh /data/wwwlogs/runlog/runlog.sh
runlog.sh 脚本
#! /bin/bash
# 日志源文件位置
LOGPATH=/data/wwwlogs/test/error-test.log
# 存放位置
BASEPATH=/data/wwwlogs/runlog/$(date -d yesterday +%Y%m)
#echo $BASEPATH
# 创建这个文件目录,按年月创建
mkdir -p $BASEPATH
# 文件名
bak=$BASEPATH/$(date -d yesterday +%d%H%M).runlogtest.access.log
#echo $bak
# 剪切日志文件到 存放位置并且名字已经起好了
mv $LOGPATH $bak
# 用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
touch $LOGPATH
# 重新打开日志文件
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
二、rewrite重写
1 if (条件) {} 设定条件在进行重写
2 set 设置变量
3 return 返回状态码
4 break 跳出 rewrite 注意:如果重新不break 会一直循环的重定向,所以每一个重写都需要break
5 rewrite 重写
6 $remote_addr url地址 如 $remote_addr = 192.168.1.1
还有更多的变量
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
7 last 使用了last 指令,rewrite 后会跳出location 作用域,重新开始再走一次刚刚的行为
语法格式
if (条件) {
重写模式
}
条件
1 = 相等
2 ~ 用正则来匹配(此处正则区分大小写)
~* 不区分大小写
3 -f -d -e -x
-f (判断请求的文件是否存在);
-d (请求的目录是否存在) ;
-e (文件或目录是否存在) ;
-x (文件是否可执行)。
./fastcgi.conf的各大参数
[root@VM-0-12-centos conf]# more ./fastcgi.conf
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#脚本文件请求的路径
fastcgi_param QUERY_STRING $query_string; #请求的参数;如?app=123
fastcgi_param REQUEST_METHOD $request_method; #请求的动作(GET,POST)
fastcgi_param CONTENT_TYPE $content_type; #请求头中的Content-Type字段
fastcgi_param CONTENT_LENGTH $content_length; #请求头中的Content-length字段。
fastcgi_param SCRIPT_NAME $fastcgi_script_name; #脚本名称
fastcgi_param REQUEST_URI $request_uri; #请求的地址不带参数
fastcgi_param DOCUMENT_URI $document_uri; #与$uri相同。
fastcgi_param DOCUMENT_ROOT $document_root; #网站的根目录。在server配置中root指令中指定的值
fastcgi_param SERVER_PROTOCOL $server_protocol; #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
fastcgi_param GATEWAY_INTERFACE CGI/1.1;#cgi 版本
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;#nginx 版本号,可修改、隐藏
fastcgi_param REMOTE_ADDR $remote_addr; #客户端IP
fastcgi_param REMOTE_PORT $remote_port; #客户端端口
fastcgi_param SERVER_ADDR $server_addr; #服务器IP地址
fastcgi_param SERVER_PORT $server_port; #服务器端口
fastcgi_param SERVER_NAME $server_name; #服务器名,域名在server配置中指定的server_name
fastcgi_param PATH_INFO $path_info;#可自定义变量