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