在Debian上使用LNMP(Linux, Nginx, MySQL/MariaDB, PHP)進行日志管理,可以采用以下幾種方法:
Nginx日志記錄了站點的所有訪問信息,包括正常和惡意請求??梢酝ㄟ^以下命令查看Nginx日志:
tail -f /var/log/nginx/access.log
為了避免日志文件過大,可以使用 logrotate
工具進行日志輪轉。logrotate
可以自動分割、壓縮、刪除和郵件通知日志文件。
sudo apt update
sudo apt install logrotate
logrotate
的配置文件通常位于 /etc/logrotate.d/nginx
。你可以編輯這個文件來設置日志輪轉規則。例如,以下配置表示每天分割一次Nginx訪問日志,并保留最近30天的日志文件:
/var/log/nginx/*.access {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 0644 root adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 $(cat /var/run/nginx.pid)
fi
endscript
}
sudo logrotate -d /etc/logrotate.conf # 測試配置文件是否有語法錯誤
sudo logrotate -f /etc/logrotate.conf # 強制執行日志輪轉
對于更復雜的日志管理需求,可以使用一些開源工具,如:
為了更好地管理和分析日志,可以自定義Nginx的日志格式。在Nginx配置文件中,使用 log_format
指令定義日志格式:
http {
log_format my_custom_format 'remote_addr - remote_user [time_local] ' '"request " status body_bytes_sent ' '" http_referer " " http_user_agent "' ;
access_log /var/log/nginx/access.log my_custom_format;
}
可以使用腳本定期分析日志,例如Nginx日志安全分析腳本:
#!/bin/bash
# 統計top 20 地址
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
通過以上方法,你可以在Debian上有效地管理LNMP環境的日志,確保系統安全和性能優化。