在nginx中,日志的配置很简单,有各种好用的选项,拿来使用即可。
一,nginx日志管理
1,log_format指令用来设置日志的记录格式,语法如下:
log_format name format (format ....)
具体日志格式如下:
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
$http_x_forwarded_for 和 $remote_user用于记录ip地址
$remote_user 用来记录远程客户端用户名称
$time_local 用来记录访问时间及地区
$request 用于记录请求的URL与HTTP协议
$status 用于记录请求的状态,例如状态为200,页面找不到时为404
$body_bytes_sent 用于记录发送给客户端的文件主体内容大小
$http_referer用于记录是从哪个页面链接访问过来的
$http_user_agent 用于记录客户端浏览器的相关信息
2,开启日志打开缓存
为了提高包含变量的日志文件存放路径的性能,可以使用:
open_log_file_cache指令来设置,格式如下:
open_log_file_cache max=N [inactive=time][min_use=N][valid=time] |off 该指令默认是禁止的,等同于: open_log_file_cache off;
max:设置缓存中的最大文件描述数量
inactive: 设置一个时间,如果在设置的时间内没有使用此文件描述,则自动删除此描述
min_uses: 在参数inactive指定的时间范围内,如果日志文件超过使用次数,则该日志文件的描述计入缓存,默认为10秒钟
valid :设置多长时间检查一次,看日志文件路径与文件名是否仍然存在,默认60秒。
例子:open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m
二,Nginx 日志分割
#!/bin/bash
#Nginx日志存放位置
logs_path="/usr/local/nginx/logs"
#将日志改名
mkdir -p $(logs_path)$(date -d "yesterday" +"%Y")/$(date -d "yesterday" + "%m")/
mv $(logs_path)access.log $(logs_path)$(date -d "yesterday" +"%Y" )/$(date -d "yesterday" + "%m" )/access_$(date -d "yesterday" + "%Y%m%d").log
#重启Nginx服务
service nginx reload
#创建计划任务
#crontab -l
01 01 * * * /bin/bash/logs.sh
您可能感兴趣的文章:
nginx 日志分割的小脚本
分享:Logrotate分割nginx日志的脚本
Nginx日志按天分割的方法分享(图文)
一个分割ngnix网站日志的Shell脚本
每天自动分割Nginx日志文件的Shell脚本
修改nginx访问日志的时间格式的方法
Nginx日志中过滤关键字的写法
nginx 日志分析实例
本节分享下linux环境中配置nginx fcgi的方法。
首先,安装nginx。
1,下载fastcgi 开发包,编译安装
#cd fcgi -current
#./configure
#make
#make install
2,下载spawn-fcgi ,编译安装
#cd spawn-f cgi -1.6.0
#./conifgure
#make
#make install
3,编写测试的c fast cgi 代码,存为 hello.c
int main( int argc, char *argv[] )
{
while( FCGI_Accept() >= 0 ) {
printf( "Content-Type: text/plain\n\n" );
printf( "Hello FastCGI\n" );
}
return 0;
}
编译c源文件,运行时有可能会报找不到lib包,可以复制一份,或做一个软链接。
比如,64位的机器,这样复制:/usr/lib64。
32位的用:/usr/lib。
4. 修改nginx.conf配置文件,重新启动nginx
listen 80;
server_name _;
location / {
root /home/user/www;
index index.html;
fast cgi _pass 127.0.0.1:9000;
}
}
5,启动hello
6,浏览nginx上的网站,会输出:Hello FastCG。
在nginx中,Rewrite用来实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库。
先来熟悉下,nginx中的if指令。
规则语法:
rewrite ^(.*)$/msie/$1 break;
}
if (!-f$request_filename){
rewrite ^/img/(.*)$/site/$host/images/$1 last;
}
其次是 rewrite 语法规则:
变量名:
~ 符号表示区分大小写字母匹配
~* 符号表示不区分大小写字母匹配
!~ 和 !~ 与~ !~ 相反
-f 和 !-f 用来判断文件是否存在
-d 和 !-d 用来判断目录是否存在
-e 和 !-e 用来判断文件或目录是否存在
-x 和 !-x 用来判断文件是否可以执行
也支持$1到$9位置参数
return指令
示例:,如果访问的URL以.sh .bash 结尾,返回状态码403
{
return 403;
}
rewrite指令
last :相当于Apache里德(L)标记,表示完成rewrite;
break;本条规则匹配完成后,终止匹配,不再匹配后面的规则
redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
last和break用来实现URL重写,浏览器地址栏URL地址不变
实例:将访问/b跳转到/bbs目录上去:
autoindex on;
alias /usr/local/nginx/html/redhat;
rewrite ^/b/?$ /bbs permanent;
}
location /bbs {
autoindex on;
alias /usr/local/nginx/html/bbs;
}
rewrite规则编写实例
1,将原来要访问/b的目录重写为/bbs
核心语句: rewrite ^/b/?$ /bbs permannet;
2,根据不同的浏览器将得到不同的结果。
rewrite ^(.*)$ /firefox/$1 break;
}
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /msie/$1 break;
}
if ($http_user_agent ~ Chrome) {
rewrite ^(.*)$ /chrome/$1 break;
}
3,防止盗链:
valid_referers none blocked www.*.test.com;
if ($invalid_referer)
rewrite ^/(.*) http://www./error.html
}
4,实现域名跳转:
listen 80;
server_name xxx.example.com;
write ^(.*)$ http://zhang.example.com/$1 permanent;
location / {
root html;
index index.html index.htm;
}
您可能感兴趣的文章:
nginx rewrite(nginx url地址重写)的配置示例nginx中一些常用的 URL 重写方法
nginx配置url重写及自定义404错误页面等
Nginx常用的 URL 重写方法
超详细的 NGINX URL重写实例讲解