zoukankan      html  css  js  c++  java
  • Nginx核心配置-自定义日志路径及清空日志注意事项

             Nginx核心配置-自定义日志路径及清空日志注意事项

                                           作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

    一.关于日志清空注意事项

    1>.nginx服务写访问日志是基于access.log的inode写入的,而非基于文件名称写入

    [root@node101.yinzhengjie.org.cn ~]# ps -ef | grep nginx | grep -v grep              #首先确认nginx服务是启动的
    root      2840     1  0 09:37 ?        00:00:00 nginx: master process nginx
    nginx     3566  2840  0 10:56 ?        00:00:00 nginx: worker process
    nginx     3567  2840  0 10:56 ?        00:00:00 nginx: worker process
    nginx     3568  2840  0 10:56 ?        00:00:00 nginx: worker process
    nginx     3569  2840  0 10:56 ?        00:00:00 nginx: worker process
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/          #请注意观察access.log文件的inode编号
    total 9048
    34412586 -rw-r--r-- 1 root  root  9231991 Dec 17 10:57 access.log
    34412582 -rw-r--r-- 1 nginx nginx   28235 Dec 17 10:57 error.log
    34553544 -rw-r--r-- 1 root  root        5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# rm -f /yinzhengjie/softwares/nginx/logs/access.log     #此处我们将之前的access.log文件删除
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# touch /yinzhengjie/softwares/nginx/logs/access.log     #删除access.log文件后立即创建一个新的同名文件
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/           #文件名称的确是一样的,但是我们发现inode编号却发生了变化
    total 32
    34553569 -rw-r--r-- 1 root  root      0 Dec 17 11:16 access.log
    34412582 -rw-r--r-- 1 nginx nginx 28235 Dec 17 10:57 error.log
    34553544 -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl http://node101.yinzhengjie.org.cn/            #虽然我们可以删除和新建了access.log文件,但整个过程并不影响nginx服务的访问
    <h1 style='color:rgb(255,0,255)'>Welcome to 'https://www.cnblogs.com/yinzhengjie/'</h1>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl http://node101.yinzhengjie.org.cn/login/
    <h1 style='color:rgb(255,0,0)'>Java</h1>
    <h1 style='color:rgb(0,255,0)'>Python</h1>
    <h1 style='color:rgb(0,0,255)'>Golang</h1>
    <h1 style='color:rgb(255,0,255)'>Shell</h1>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/            #我们在删除access.log并创建文件后,对nginx进行了两次正常访问,发现日志记录并没有记录,那是因为nginx服务还是记录之前的access.log的inode编号。
    total 32
    34553569 -rw-r--r-- 1 root  root      0 Dec 17 11:16 access.log
    34412582 -rw-r--r-- 1 nginx nginx 28235 Dec 17 10:57 error.log
    34553544 -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 

    2>. 解决nginx服务的access.log无法写入的问题

    [root@node101.yinzhengjie.org.cn ~]# ps -ef | grep nginx | grep -v grep
    root      2840     1  0 09:37 ?        00:00:00 nginx: master process nginx
    nginx     3566  2840  0 10:56 ?        00:00:00 nginx: worker process
    nginx     3567  2840  0 10:56 ?        00:00:00 nginx: worker process
    nginx     3568  2840  0 10:56 ?        00:00:00 nginx: worker process
    nginx     3569  2840  0 10:56 ?        00:00:00 nginx: worker process
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl http://node101.yinzhengjie.org.cn/
    <h1 style='color:rgb(255,0,255)'>Welcome to 'https://www.cnblogs.com/yinzhengjie/'</h1>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl http://node101.yinzhengjie.org.cn/login/
    <h1 style='color:rgb(255,0,0)'>Java</h1>
    <h1 style='color:rgb(0,255,0)'>Python</h1>
    <h1 style='color:rgb(0,0,255)'>Golang</h1>
    <h1 style='color:rgb(255,0,255)'>Shell</h1>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/        #我们之前使用rm命令删除并使用touch重新创建了access.log,发现始终无法正常记录日志了
    total 32
    34553569 -rw-r--r-- 1 root  root      0 Dec 17 11:16 access.log
    34412582 -rw-r--r-- 1 nginx nginx 28295 Dec 17 11:23 error.log
    34553544 -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# nginx -s reload
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ps -ef | grep nginx | grep -v grep
    root      2840     1  0 09:37 ?        00:00:00 nginx: master process nginx
    nginx     3645  2840  3 11:23 ?        00:00:00 nginx: worker process
    nginx     3646  2840  3 11:23 ?        00:00:00 nginx: worker process
    nginx     3647  2840  4 11:23 ?        00:00:00 nginx: worker process
    nginx     3648  2840  3 11:23 ?        00:00:00 nginx: worker process
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl http://node101.yinzhengjie.org.cn/
    <h1 style='color:rgb(255,0,255)'>Welcome to 'https://www.cnblogs.com/yinzhengjie/'</h1>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl http://node101.yinzhengjie.org.cn/login/
    <h1 style='color:rgb(255,0,0)'>Java</h1>
    <h1 style='color:rgb(0,255,0)'>Python</h1>
    <h1 style='color:rgb(0,0,255)'>Golang</h1>
    <h1 style='color:rgb(255,0,255)'>Shell</h1>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/                #发现使用"reload"命令行,又可以继续写入数据了
    total 36
    34553569 -rw-r--r-- 1 root  root    183 Dec 17 11:23 access.log
    34412582 -rw-r--r-- 1 nginx nginx 28295 Dec 17 11:23 error.log
    34553544 -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 

    3>.删除access.log后,使用reload参数可以重写生成新的access.log(如果删除了error.log也一样在重启nginx时自动创建该文件)

    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/
    total 36
    -rw-r--r-- 1 root  root    183 Dec 17 11:23 access.log
    -rw-r--r-- 1 nginx nginx 28295 Dec 17 11:23 error.log
    -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# rm -f /yinzhengjie/softwares/nginx/logs/access.log 
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/
    total 32
    -rw-r--r-- 1 nginx nginx 28295 Dec 17 11:23 error.log
    -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# nginx -s reload
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/
    total 32
    -rw-r--r-- 1 root  root      0 Dec 17 11:26 access.log
    -rw-r--r-- 1 nginx nginx 28355 Dec 17 11:26 error.log
    -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl http://node101.yinzhengjie.org.cn/login/
    <h1 style='color:rgb(255,0,0)'>Java</h1>
    <h1 style='color:rgb(0,255,0)'>Python</h1>
    <h1 style='color:rgb(0,0,255)'>Golang</h1>
    <h1 style='color:rgb(255,0,255)'>Shell</h1>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/
    total 36
    33691734 -rw-r--r-- 1 root  root     95 Dec 17 11:28 access.log
    34412582 -rw-r--r-- 1 nginx nginx 28355 Dec 17 11:26 error.log
    34553544 -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 

    4>.生产环境中正确的清空access.log日志的姿势

    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/
    total 36
    33691734 -rw-r--r-- 1 root  root     95 Dec 17 11:28 access.log
    34412582 -rw-r--r-- 1 nginx nginx 28355 Dec 17 11:26 error.log
    34553544 -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# echo > /yinzhengjie/softwares/nginx/logs/access.log  #使用"echo"命令清空文件可以立即释放内存空间,若使用rm命令删除文件并不会立即释放空间,因为nginx服务还是在引用删除之前的acess.log的inode编号。
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/
    total 36
    33691734 -rw-r--r-- 1 root  root      1 Dec 17 11:31 access.log
    34412582 -rw-r--r-- 1 nginx nginx 28355 Dec 17 11:26 error.log
    34553544 -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl http://node101.yinzhengjie.org.cn/login/
    <h1 style='color:rgb(255,0,0)'>Java</h1>
    <h1 style='color:rgb(0,255,0)'>Python</h1>
    <h1 style='color:rgb(0,0,255)'>Golang</h1>
    <h1 style='color:rgb(255,0,255)'>Shell</h1>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/
    total 36
    33691734 -rw-r--r-- 1 root  root     96 Dec 17 11:31 access.log
    34412582 -rw-r--r-- 1 nginx nginx 28355 Dec 17 11:26 error.log
    34553544 -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl http://node101.yinzhengjie.org.cn/
    <h1 style='color:rgb(255,0,255)'>Welcome to 'https://www.cnblogs.com/yinzhengjie/'</h1>
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll -i /yinzhengjie/softwares/nginx/logs/
    total 36
    33691734 -rw-r--r-- 1 root  root    184 Dec 17 11:31 access.log
    34412582 -rw-r--r-- 1 nginx nginx 28355 Dec 17 11:26 error.log
    34553544 -rw-r--r-- 1 root  root      5 Dec 17 09:37 nginx.pid
    [root@node101.yinzhengjie.org.cn ~]# 

    二.自定义访问日志路径

    1>.编辑主配置文件

    [root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/nginx/conf/nginx.conf
    worker_processes  4;
    worker_cpu_affinity 00000001 00000010 00000100 00001000; 
    
    events {
        worker_connections  100000;
        use epoll;
        accept_mutex on;
        multi_accept on; 
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        gzip  on;
        charset utf-8;
        keepalive_timeout  65 65;
         
        #导入其他路径的配置文件
        include /yinzhengjie/softwares/nginx/conf.d/*.conf;
    }
    
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# nginx -t
    nginx: the configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf test is successful
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 

    2>.编辑子配置文件

    [root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/nginx/conf.d/auth.conf 
    server {
        listen 80;
        server_name node101.yinzhengjie.org.cn;
    
        error_page 500 502 503 504 404 /error.html;
     
    
        access_log /yinzhengjie/softwares/nginx/logs/node101_yinzhengjie_org_cn_access.log;
        error_log  /yinzhengjie/softwares/nginx/logs/node101_yinzhengjie_org_cn_error.log;
    
        location / {
            root /yinzhengjie/data/web/nginx/html;
            index index.html;
        }
    
        location /login {
            root /yinzhengjie/data/web/nginx;
            index index.html;
            deny 172.30.1.108;
            allow 172.30.1.0/24;
            allow 2001:0db8::/32;
            deny all;
        }
    
        
        location /error.html {
            root /yinzhengjie/data/web/nginx/html/404;
        }
    }
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# nginx -t
    nginx: the configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf test is successful
    [root@node101.yinzhengjie.org.cn ~]# 

    3>.重新加载nginx服务

    [root@node101.yinzhengjie.org.cn ~]# ps -ef | grep nginx | grep -v grep
    root      2840     1  0 09:37 ?        00:00:00 nginx: master process nginx
    nginx     3715  2840  0 11:36 ?        00:00:00 nginx: worker process
    nginx     3716  2840  0 11:36 ?        00:00:00 nginx: worker process
    nginx     3717  2840  0 11:36 ?        00:00:00 nginx: worker process
    nginx     3718  2840  0 11:36 ?        00:00:00 nginx: worker process
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# nginx -s reload
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ps -ef | grep nginx | grep -v grep
    root      2840     1  0 09:37 ?        00:00:00 nginx: master process nginx
    nginx     3791  2840  2 11:56 ?        00:00:00 nginx: worker process
    nginx     3792  2840  2 11:56 ?        00:00:00 nginx: worker process
    nginx     3793  2840  2 11:56 ?        00:00:00 nginx: worker process
    nginx     3794  2840  2 11:56 ?        00:00:00 nginx: worker process
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 

    4>.访问nginx服务,观察日志大小变化

    [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/softwares/nginx/logs/
    total 8
    -rw-r--r-- 1 root root   0 Dec 17 11:37 access.log
    -rw-r--r-- 1 root root 256 Dec 17 11:56 error.log
    -rw-r--r-- 1 root root   5 Dec 17 09:37 nginx.pid
    -rw-r--r-- 1 root root   0 Dec 17 11:53 node101_yinzhengjie_org_cn_access.log
    -rw-r--r-- 1 root root   0 Dec 17 11:53 node101_yinzhengjie_org_cn_error.log
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl -I http://node101.yinzhengjie.org.cn/
    HTTP/1.1 200 OK
    Server: nginx/1.14.2
    Date: Tue, 17 Dec 2019 03:57:26 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 88
    Last-Modified: Sun, 15 Dec 2019 15:13:15 GMT
    Connection: keep-alive
    Keep-Alive: timeout=65
    ETag: "5df64d8b-58"
    Accept-Ranges: bytes
    
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/softwares/nginx/logs/
    total 12
    -rw-r--r-- 1 root root   0 Dec 17 11:37 access.log
    -rw-r--r-- 1 root root 256 Dec 17 11:56 error.log
    -rw-r--r-- 1 root root   5 Dec 17 09:37 nginx.pid
    -rw-r--r-- 1 root root  88 Dec 17 11:57 node101_yinzhengjie_org_cn_access.log
    -rw-r--r-- 1 root root   0 Dec 17 11:53 node101_yinzhengjie_org_cn_error.log
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl -I http://node101.yinzhengjie.org.cn/login
    HTTP/1.1 301 Moved Permanently
    Server: nginx/1.14.2
    Date: Tue, 17 Dec 2019 03:57:46 GMT
    Content-Type: text/html
    Content-Length: 185
    Location: http://node101.yinzhengjie.org.cn/login/
    Connection: keep-alive
    Keep-Alive: timeout=65
    
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/softwares/nginx/logs/
    total 12
    -rw-r--r-- 1 root root   0 Dec 17 11:37 access.log
    -rw-r--r-- 1 root root 256 Dec 17 11:56 error.log
    -rw-r--r-- 1 root root   5 Dec 17 09:37 nginx.pid
    -rw-r--r-- 1 root root 378 Dec 17 11:57 node101_yinzhengjie_org_cn_access.log
    -rw-r--r-- 1 root root   0 Dec 17 11:53 node101_yinzhengjie_org_cn_error.log
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# curl -I http://node101.yinzhengjie.org.cn/login/111111111
    HTTP/1.1 404 Not Found
    Server: nginx/1.14.2
    Date: Tue, 17 Dec 2019 03:58:01 GMT
    Content-Type: text/html; charset=utf-8
    Content-Length: 1717
    Connection: keep-alive
    Keep-Alive: timeout=65
    ETag: "5df84120-6b5"
    
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/softwares/nginx/logs/
    total 16
    -rw-r--r-- 1 root root   0 Dec 17 11:37 access.log
    -rw-r--r-- 1 root root 256 Dec 17 11:56 error.log
    -rw-r--r-- 1 root root   5 Dec 17 09:37 nginx.pid
    -rw-r--r-- 1 root root 481 Dec 17 11:58 node101_yinzhengjie_org_cn_access.log
    -rw-r--r-- 1 root root 272 Dec 17 11:58 node101_yinzhengjie_org_cn_error.log
    [root@node101.yinzhengjie.org.cn ~]# 
  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/12040932.html
Copyright © 2011-2022 走看看