Nginx ialah sumber terbuka, HTTP berprestasi tinggi dan pelayan proksi terbalik yang bertanggungjawab untuk mengendalikan beban beberapa tapak terbesar di Internet. Salah satu tugas paling biasa yang akan anda lakukan semasa menguruskan pelayan web NGINX ialah menyemak fail log.
Mengetahui cara mengkonfigurasi dan membaca log sangat berguna apabila menyelesaikan masalah pelayan atau isu aplikasi, kerana ia menyediakan maklumat penyahpepijatan terperinci.
Nginx menggunakan dua jenis log untuk merekodkan peristiwanya: log akses dan log ralat. Akses rekod pengelogan maklumat tentang permintaan pelanggan, dan pengelogan ralat merekodkan maklumat tentang masalah pelayan dan aplikasi.
Nginx akan menjana rekod baharu dalam log akses setiap kali permintaan pelanggan diproses. Setiap rekod acara mengandungi cap masa dan mengandungi pelbagai maklumat tentang pelanggan dan sumber yang diminta. Log akses boleh menunjukkan lokasi pelawat, halaman yang dilawati oleh pelawat, dsb. Arahan
log_format
membolehkan anda mentakrifkan format pengelogan. Arahan access_log
mendayakan dan menetapkan lokasi fail log dan format yang digunakan. Sintaks paling asas bagi arahan
access_log
adalah seperti berikut:
access_log log_file log_format;
di mana log_file
ialah laluan penuh fail log dan log_format
ialah format yang digunakan untuk fail log. Pengelogan akses boleh didayakan dalam konteks arahan http
, server
atau location
.
Secara lalai, arahan http
dalam fail konfigurasi utama Nginx mengkonfigurasi format log akses global.
http { ... access_log /var/log/nginx/access.log; ... }
/etc/nginx/nginx.conf
Untuk kebolehselenggaraan yang lebih baik, adalah disyorkan untuk menyediakan fail log akses berasingan untuk setiap pelayan. Set arahan server
dalam arahan access_log
akan menimpa set http
dalam arahan access_log
.
http { ... access_log /var/log/nginx/access.log; ... server { server_name domain.com access_log /var/log/nginx/domain.access.log; ... } }
/etc/nginx/conf.d/domain.com.conf
Jika tiada format log ditentukan, Nginx akan menggunakan format gabungan yang dipratentukan seperti berikut:
log_format combined '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';
Untuk menukar format pengelogan, gantikan tetapan lalai atau tentukan yang baharu. Contohnya, untuk mentakrifkan format pengelogan baharu bernama main
yang akan memanjangkan format X-Forwarded-For
dengan menambah nilai pengepala combined
, tambah arahan definisi berikut dalam http
atau server
:
Untuk menggunakan format log baharu, nyatakan nama fail log selepasnya, seperti ini:
log_format custom '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
Log akses memberikan maklumat yang sangat berguna walaupun. Tetapi ia mengambil ruang cakera dan boleh menjejaskan prestasi pelayan. Jika pelayan anda kekurangan sumber dan tapak anda sibuk, anda mungkin mahu melumpuhkan log akses. Untuk melakukan ini, tetapkan nilai arahan access_log
kepada off
. Secara teorinya anda tidak akan mengalami situasi ini, Nginx akan memadam fail log sebelumnya secara automatik:
access_log /var/log/nginx/access.log custom;
Nginx menulis aplikasi dan mesej ralat pelayan umum ke fail log ralat . Jika anda menghadapi ralat dalam aplikasi web anda, log ralat adalah tempat pertama anda mula menyelesaikan masalah tersebut. Arahan error_log
mendayakan dan menetapkan lokasi dan tahap keterukan log ralat. Ia mengambil format berikut dan boleh ditetapkan dalam konteks http
, server
atau location
: Parameter
access_log off;
log_level
menetapkan tahap pengelogan. Berikut ialah tahap yang disenaraikan daripada tahap keterukan terendah hingga tertinggi:
error_log log_file log_level
Setiap tahap log termasuk tahap yang lebih tinggi. Contohnya, jika anda menetapkan tahap log kepada warn
, Nginx juga akan log error
, crit
, alert
dan emerg
mesej. Apabila parameter log_level
tidak ditentukan, lalainya ialah error
. Secara lalai, arahan error_log
ditakrifkan dalam konteks arahan http
di dalam fail nginx.conf utama:
debug info notice warn error crit alert emerg
/etc/nginx/nginx.conf adalah sama dengan log akses dan disyorkan untuk ditetapkan untuk setiap pelayan Fail log ralat berasingan yang mengatasi tetapan peringkat lebih tinggi seperti konteks arahan http. Sebagai contoh, untuk menetapkan log ralat untuk domain.com kepada warn
, anda akan menggunakan:
http { ... error_log /var/log/nginx/error.log; ... }
Setiap kali anda mengubah suai fail konfigurasi, anda mesti memuat semula perkhidmatan Nginx untuk perubahan berkuat kuasa.
Dalam kebanyakan pengedaran Linux seperti Ubuntu, CentOS dan Debian. Secara lalai, akses dan log ralat terletak dalam direktori /var/log/nginx
.
Anda boleh menggunakan arahan seperti cat
, less
, grep
, cut
, awk
untuk membuka dan menghuraikan fail log nginx . Berikut ialah rekod fail log akses menggunakan format log Nginx lalai:
192.168.33.1 - - [15/Oct/2019:19:41:46 +0000] "GET / HTTP/1" 200 396 "-" "Mozilla/0 (X11; Linux x86_64) AppleWebKit/536 (KHTML, like Gecko) Chrome/38120 Safari/536"
让我们细分Nginx日志文件记录的每个字段意味着什么:
$remote_addr
– 192.168.33.1
-发出请求的客户端的IP地址。
$remote_user
– -
-HTTP身份验证用户。未设置用户名时,此字段显示 -
。
[$time_local]
– [15/Oct/2019:19:41:46 +0000]
本地服务器时间。
"$request"
– "GET / HTTP/1.1"
-请求类型,路径和协议。
$status
– 200
-服务器响应代码。
$body_bytes_sent
– 396
-服务器响应的大小(以字节为单位)。
"$http_referer"
– "-"
-引荐网址。
"$http_user_agent"
– Mozilla/5.0 ...
-客户端的用户代理(网络浏览器)。
使用 tail
命令实时观看日志文件记录: tail -f access.log
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi akses Nginx dan log ralat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!