博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx增加错误日志配置
阅读量:5363 次
发布时间:2019-06-15

本文共 6388 字,大约阅读时间需要 21 分钟。

Nginx软件将错误的故障信息及用户的访问的日志信息记录到指定的日志文件

1. Nginx错误日志信息介绍
    核心功能模块:ngx_core_module的参数名:error_log,
    配置位置:Main区域中 全局配置 或者 虚拟主机单独配置
    放置的标签段:main、http、server、location
    语法格式:error.log(关键字) file(日志文件) level(错误日志级别)
    日志级别:[debug|info|notice|warn|error|crit|alert|emerg]
          级别一次增高,级别越高记录的信息越少
          注意:不要配置info等较低的级别,会带来巨大的磁盘I/O消耗
    eg:#default:error.log logs/error.log error
2.Nginx错误日志配置
worker_processes  1;
error_log logs/error.log; #<==增加这一行即可
events {
    worker_connections  1024;
}
3.访问日志的参数
log_format
语法:log_format name string ...;
格式:log_format main 'remote_addr - $remote_user [$time_local] "$request" '
            '$status $body_bytes_sent "$http_referer" '
            '"$http_uer_agent" "$http_x_forwarded_for" ';
位置:http标签内
access_log
语法:access_log path [format [buffer=size [flush = time]] [if=condition]]
    access_log path format gzip [=size] [buffer = size] [flush = time]
        [if = condition];
    access_log syslog:server=address[,parameter=value] [format [if=condition]];
access_log off 表示不记录访问日志
4.访问日志配置
[root@instance-yf0xzby9 conf]# sed -n '21,23 s/#//gp' nginx.conf.default
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
将上述配置放入nginx.conf 中
[root@instance-yf0xzby9 conf]# vi nginx.conf
[root@instance-yf0xzby9 conf]# cat -n nginx.conf
     1    worker_processes  1;
     2    error_log logs/error.log;
     3    events {
     4        worker_connections  1024;
     5    }
     6    http {
     7        include       mime.types;
     8        default_type  application/octet-stream;
     9        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    10                          '$status $body_bytes_sent "$http_referer" '
    11                          '"$http_user_agent" "$http_x_forwarded_for"';
    12        sendfile        on;
    13        keepalive_timeout  65;
    14    include extra/www.conf;
    15    include extra/bbs.conf;
    16    include extra/blog.conf;
    17    include extra/status.conf;
    18    
    19    }
   然后在每个虚拟主机进行配置,并检查
[root@instance-yf0xzby9 conf]# vi -n  extra/www.conf
[root@instance-yf0xzby9 conf]# cat extra/www.conf
    server {
        listen       80;
        server_name  www.etiantian.org etiantian.org;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    access_log logs/access_www.log main;
    }
[root@instance-yf0xzby9 conf]# ../sbin/nginx -t
nginx: the configuration file /application/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx/conf/nginx.conf test is successful
[root@instance-yf0xzby9 conf]# ../sbin/nginx -s reload
[root@instance-yf0xzby9 conf]# curl www.etiantian.org
http://www.etiantian.org
[root@instance-yf0xzby9 conf]# ls -l ../logs/access_www.log
-rw-r--r-- 1 root root 187 Sep 27 09:53 ../logs/access_www.log
[root@instance-yf0xzby9 conf]# tail -l ../logs/access_www.log
172.16.0.4 - - [27/Sep/2018:09:53:07 +0800] "GET / HTTP/1.1" 200 25 "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-"
日志深入
加上buffer和flush选项,在高并发场景下提高网站的性能
server {
        listen       80;
        server_name  www.etiantian.org etiantian.org;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    #access_log logs/access_www.log main;
    access_log logs/access_www.log main gzip buffer=32k flush=5s;
    #access_log off;
    
    }
5.访问日志轮询切割
按天切割脚本:
Dateformat='date+%y%m%%d'
Basedir="/application/nginx"
Nginxlogdir="%Basedir/logs"
Logname="access_www"
[-d $Nginxlogdir ] && cd $Nginxlogdir||exit 1
[-f ${Logname}.log]||exit 1
/bin/mv ${Logname}.log ${Dateformat}_${Logname}.log
$Basedir/sbin/nginx -s reload
思想:将正在写入的Nginx日志文件(access_www.log)改名为  带日期的格式文件(20180927_access.log)
      然后重新加载Nginx,生成新的Nginx日志(access_www.log)
6.Nginx location
语法:location [ = | ~ | ~* | ^~ ] uri {
...
}
说明:
指令 匹配标识 匹配的网站网址 匹配URI后要执行的配置段
~:用于区分大小写
~*:不区分大小写(还可以使用!来进行取反操作)
^~:进行常规的字符串匹配检查后,不做正则表达式的检查
[root@instance-yf0xzby9 extra]# cat www.conf
    server {
        listen       80;
        server_name  www.etiantian.org etiantian.org;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
    location / {
        return 401;
    }
    location = / {
            return 402;
        }
    location /documents/ {
            return 403;
        }
    location ^~ /images {
            return 404;
        }
    #location ~* \.(gif|jpg|jpeg)$ {
         #   return 500;
       # }
    #access_log logs/access_www.log main;
    access_log logs/access_www.log main gzip buffer=32k flush=5s;
    #access_log off;
    
    }
然后检查语法,并平滑启动
测试结果:
 curl -l -o /dev/null -I -w "%{http_code}" http://www.etiantian.org
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   182    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
402
其他测试依次类推
7.Nginx rewrite
功能:实现URL地址重写
前提:需要pcre的支持,即通过perl兼容正则表达式语法进行规则匹配
语法:rewrite regex replacement[flag]
默认值:none
位置:server、location、if
eg: rewrite ^/(.*) http://www.etiantian.org/$1 permanent;
$1:表示去正则表达式前面的内容
permanent:表示永久301定向标记
应用:
01.调整用户浏览的URL,看以来更规范
02.为了让搜索引擎收录网站内容,提高用户体验,将动态URL地址伪装成静态地址
03.更换新的域名后,让旧域名跳转到新的域名上
04.根据特殊变量、目录、客户端的信息进行URL跳转等
实战:
301跳转:
[root@instance-yf0xzby9 extra]# cat www.conf
   server{
    listen        80;
    server_name etiantian.org;
    rewrite ^/(.*) http://www.etiantian.org/$1 permanent;
   }
    server {
        listen       80;
    server_name www.etiantian.org;
        #server_name  www.etiantian.org etiantian.org;
        root   html/www;
        error_page   500 502 503 504  /50x.html;
    location / {
        return 401;
    }
    location = / {
            return 402;
        }
    location /documents/ {
            return 403;
        }
    location ^~ /images {
            return 404;
        }
    #location ~* \.(gif|jpg|jpeg)$ {
         #   return 500;
       # }
    #access_log logs/access_www.log main;
    access_log logs/access_www.log main gzip buffer=32k flush=5s;
    #access_log off;
    
    }
则 可以实现在访问etiantian.org 时,自动跳转到www.etiantain.org 与设置
虚拟主机别名起到同样的效果。
实现不同域名的URL跳转:
(外部跳转常用方法)
8.Nginx访问认证
更改www.conf配置文件
server {
        listen       80;
        server_name  www.etiantian.org etiantian.org;
        error_page   500 502 503 504  /50x.html;
        location / {
            root        html/www;
            index       index.html index.htm;
            auth_basic  "hty training";
            auth_basic_user_file /application/nginx/conf/htpasswd;
        }
        #access_log logs/access_www.log main;
        access_log logs/access_www.log main gzip buffer=32k flush=5s;
        #access_log off;
    }
安装httpd后设置认证账号和密码
htpasswd -bc /application/nginx/conf/htpasswd hty 123456
chmod 400 /application/nginx/conf/htpasswd
chown nginx /application/nginx/conf/htpasswd
浏览器访问时注意带接口访问,防止自动跳转到老男孩网站。
9.访问Nginx时出现“403 forbidden”状态码
原因:
    01.配置文件没有默认首页参数,或者首页文件在站点目录下没有index、index.php、index.html、index.htm等
    02.站点目录下没有配置文件里指定的首页文件
    03.站点目录或内部的程序文件没有Nginx用户访问权限
    04.Nginx配置文件中设置了allow、deny等权限控制

转载于:https://www.cnblogs.com/01black-white/p/9720257.html

你可能感兴趣的文章
Open multiple excel files in WebBrowser, only the last one gets activated
查看>>
FFmpeg进行视频帧提取&音频重采样-Process.waitFor()引发的阻塞超时
查看>>
最近邻与K近邻算法思想
查看>>
【VS开发】ATL辅助COM组件开发
查看>>
FlatBuffers In Android
查看>>
《演说之禅》I &amp; II 读书笔记
查看>>
thinkphp3.2接入支付宝支付接口(PC端)
查看>>
response和request
查看>>
【转】在Eclipse中安装和使用TFS插件
查看>>
C#中Monitor和Lock以及区别
查看>>
【NOIP2017】奶酪
查看>>
5.6.3.7 localeCompare() 方法
查看>>
Linux下好用的简单实用命令
查看>>
描绘应用程序级的信息
查看>>
php环境搭建脚本
查看>>
php 编译常见错误
查看>>
MES架构
查看>>
高性能JavaScript-JS脚本加载与执行对性能的影响
查看>>
hdu 2767(tarjan)
查看>>
sklearn之分类模型混淆矩阵和分类报告
查看>>