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 ~]# 

 

posted @ 2019-12-14 21:11  尹正杰  阅读(4170)  评论(0编辑  收藏  举报