在Ubuntu系統中,Nginx的錯誤日志默認存儲位置為/var/log/nginx/error.log
。若用戶自定義了日志路徑,需通過nginx.conf
(主配置文件)或站點配置文件(如/etc/nginx/sites-enabled/
下的文件)中的error_log
指令確認具體路徑。
使用以下命令實時輸出錯誤日志內容(便于快速捕捉最新錯誤):
sudo tail -f /var/log/nginx/error.log
若需查看最近的50條錯誤記錄,可使用:
sudo tail -n 50 /var/log/nginx/error.log
通過日志中的錯誤關鍵詞(如[error]
、[emerg]
),可快速定位問題根源并解決:
[emerg]
(緊急錯誤)或[syntax error]
,例如:[emerg] invalid number of arguments in "listen" directive in /etc/nginx/sites-enabled/default:3
nginx -t
命令測試配置文件語法,根據提示修正錯誤(如listen
指令缺少端口號、路徑拼寫錯誤等):sudo nginx -t
修正后,重新加載配置(無需重啟服務):sudo systemctl reload nginx
bind() to 0.0.0.0:80 failed (98: Address already in use)
,表示80端口已被其他服務(如Apache)占用。lsof
或netstat
命令查找占用端口的進程:sudo lsof -i :80
停止沖突服務(如Apache):sudo systemctl stop apache2
或修改Nginx的listen
指令(如將80端口改為8080):sudo nano /etc/nginx/sites-enabled/default
找到listen 80;
改為listen 8080;
,保存后重新加載配置。open() "/var/log/nginx/error.log" failed (13: Permission denied)
,表示Nginx用戶(通常為www-data
)無權限寫入日志文件。www-data
用戶有讀寫權限:sudo chown -R www-data:www-data /var/log/nginx
sudo chmod -R 755 /var/log/nginx
若日志目錄不存在,需先創建并設置權限:sudo mkdir -p /var/log/nginx
sudo chown www-data:www-data /var/log/nginx
sudo chmod 755 /var/log/nginx
upstream prematurely closed connection
、502 Bad Gateway
或504 Gateway Timeout
,表示Nginx無法連接到后端服務。sudo systemctl status php-fpm
若未運行,啟動服務:sudo systemctl start php-fpm
proxy_pass
或fastcgi_pass
指令是否正確(如指向后端服務的IP和端口):sudo nano /etc/nginx/sites-enabled/default
確保fastcgi_pass
指向正確的PHP-FPM端口(默認為127.0.0.1:9000
):location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
proxy_connect_timeout
、fastcgi_read_timeout
),避免因后端響應慢導致超時:sudo nano /etc/nginx/nginx.conf
在http
塊中添加或修改:proxy_connect_timeout 60s;
proxy_read_timeout 60s;
fastcgi_read_timeout 60s;
worker_connections are not enough
或Cannot allocate memory
,表示Nginx的連接數或系統內存不足。worker_processes
(設置為CPU核心數)和worker_connections
(每個worker的最大連接數):sudo nano /etc/nginx/nginx.conf
在events
塊中修改:events {
worker_connections 1024; # 根據實際情況調整(如2048)
}
worker_processes auto; # 自動匹配CPU核心數
sudo du -sh /var/log/*
sudo rm -rf /var/log/*.gz # 刪除壓縮的舊日志
journalctl
查看系統日志:sudo journalctl -u nginx --no-pager -n 50
nginx.conf
的http
塊中添加error_log /var/log/nginx/error.log debug;
,重啟Nginx后獲取更詳細的調試信息(調試完成后需改回warn
或error
級別,避免日志過大)。通過以上步驟,可快速定位并解決Ubuntu下Nginx的大多數錯誤問題。若問題仍未解決,建議結合日志中的具體錯誤信息,進一步搜索或尋求社區支持。