Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Analisis konfigurasi pemotongan log Nginx, pengurusan storan log laman web

Analisis konfigurasi pemotongan log Nginx, pengurusan storan log laman web

王林
王林asal
2023-07-04 10:12:061311semak imbas

Analisis konfigurasi pemotongan log nginx, pengurusan storan log laman web

Dalam proses pengendalian laman web, log adalah sangat penting. Ia boleh menyediakan rekod terperinci tentang status berjalan tapak web, membantu pembangun dan pentadbir menganalisis masalah dan mengoptimumkan prestasi. Walau bagaimanapun, apabila tapak web terus berkembang, fail log akan menjadi lebih besar dan lebih besar, yang akan mengenakan cukai kepada ruang storan dan prestasi pelayan. Untuk menyelesaikan masalah ini, kita boleh menggunakan fungsi pemotongan log Nginx untuk membahagikan fail log mengikut masa atau saiz, untuk mencapai pengurusan dan penyimpanan log yang berkesan.

Nginx ialah pelayan web berprestasi tinggi, dan fungsi serta tingkah lakunya boleh dilaraskan secara fleksibel melalui fail konfigurasi. Di bawah, kami akan menggunakan contoh mudah untuk menunjukkan cara mengkonfigurasi Nginx untuk melaksanakan pemotongan log.

Pertama, kita perlu menentukan format log dan laluan storan dalam fail konfigurasi Nginx. Dalam modul http Nginx, anda boleh mentakrifkan format log dengan menambahkan kod berikut: http模块中,可以通过添加以下代码来定义日志格式:

http {
    ...
    log_format access '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    ...
}

在上述代码中,log_format指令定义了一个名为access的日志格式,其中包含了一些常用的日志变量,如客户端IP地址、访问时间、请求URL、返回状态码等。

接下来,我们需要将这个日志格式应用到具体的访问日志中。在Nginx的server块中,可以通过添加以下代码来指定访问日志的存储路径和格式:

server {
    ...
    access_log /var/log/nginx/access.log access;
    ...
}

在上述代码中,access_log指令指定了访问日志的存储路径和格式。其中,/var/log/nginx/access.log为日志文件的存储路径,access为之前定义的日志格式名称。

默认情况下,Nginx会把所有的访问日志写入到同一个文件中。但是,当这个文件变得非常大时,我们可能会希望将它拆分成多个小文件。为了实现这个功能,我们可以使用Nginx提供的logrotate工具。

logrotate是一个常用的日志切割工具,可以根据指定的规则来拆分日志文件。我们可以编写一个名为nginx的配置文件,其中定义了Nginx访问日志的拆分规则。下面是一个示例:

/var/log/nginx/access.log {
    daily
    rotate 7
    missingok
    notifempty
    compress
    postrotate
        /usr/sbin/nginx -s reopen
    endscript
}

在上述代码中,/var/log/nginx/access.log为需要被拆分的日志文件路径。daily指定了按天拆分,rotate 7表示保留7天的日志文件。missingok表示如果日志文件不存在,也不报错。notifempty表示如果日志文件为空,也不报错。compress表示对新生成的日志文件进行压缩。postrotateendscript之间的代码会在日志文件切割完成后执行,这里使用/usr/sbin/nginx -s reopen来通知Nginx重新打开日志文件。

最后,我们需要将这个nginx配置文件放置到/etc/logrotate.d/目录下。logrotaterrreee

Dalam kod di atas, arahan log_format mentakrifkan format log bernama access , yang mengandungi beberapa pembolehubah log yang biasa digunakan, seperti alamat IP klien, masa akses, URL permintaan, kod status pemulangan, dsb.

Seterusnya, kita perlu menggunakan format log ini pada log akses tertentu. Dalam blok server Nginx, anda boleh menentukan laluan storan dan format log akses dengan menambahkan kod berikut: 🎜rrreee🎜Dalam kod di atas, arahan access_log menentukan laluan dan format storan log akses. Antaranya, /var/log/nginx/access.log ialah laluan storan fail log dan access ialah nama format log yang ditakrifkan sebelum ini. 🎜🎜Secara lalai, Nginx akan menulis semua log akses ke fail yang sama. Walau bagaimanapun, apabila fail ini menjadi sangat besar, kami mungkin mahu membahagikannya kepada beberapa fail yang lebih kecil. Untuk mencapai fungsi ini, kita boleh menggunakan alat logrotate yang disediakan oleh Nginx. 🎜🎜logrotate ialah alat pemotong log yang biasa digunakan yang boleh membahagi fail log mengikut peraturan yang ditetapkan. Kita boleh menulis fail konfigurasi bernama nginx, yang mentakrifkan peraturan pemisahan log akses Nginx. Berikut ialah contoh: 🎜rrreee🎜Dalam kod di atas, /var/log/nginx/access.log ialah laluan fail log yang perlu dipecahkan. harian menentukan pemisahan mengikut hari dan putar 7 bermaksud mengekalkan fail log selama 7 hari. missingok bermakna jika fail log tidak wujud, tiada ralat akan dilaporkan. notifempty bermakna jika fail log kosong, tiada ralat akan dilaporkan. compress bermaksud memampatkan fail log yang baru dijana. Kod antara postrotate dan endscript akan dilaksanakan selepas fail log dipotong Di sini, gunakan /usr/sbin/nginx -s reopen untuk maklumkan Nginx membuka semula fail log. 🎜🎜Akhir sekali, kita perlu meletakkan fail konfigurasi nginx ini dalam direktori /etc/logrotate.d/. logrotate akan mengimbas direktori ini dengan kerap dan kemudian memisahkan log mengikut fail konfigurasi di dalamnya. 🎜🎜Di atas adalah contoh mudah menggunakan Nginx untuk melaksanakan pemotongan balak. Dengan mengkonfigurasi format log Nginx dan peraturan pemotongan dengan betul, kami boleh mengurus dan menyimpan log akses tapak web dengan berkesan. Ini bukan sahaja menjimatkan ruang storan tetapi juga meningkatkan prestasi keseluruhan pelayan. Semoga artikel ini bermanfaat kepada anda. 🎜

Atas ialah kandungan terperinci Analisis konfigurasi pemotongan log Nginx, pengurusan storan log laman web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn