如何設定Nginx存取與錯誤日誌
Nginx是一個開放原始碼的高效能HTTP和反向代理伺服器,負責處理網路上某些最大網站的負載。在管理NGINX網路伺服器時,你要執行的最常見任務之一就是檢查日誌檔案。
在對伺服器或應用程式問題進行故障排除時,知道如何配置和讀取日誌非常有用,因為它們提供了詳細的偵錯資訊。
Nginx用兩種類型的日誌記錄其事件:存取日誌和錯誤日誌。存取日誌記錄有關客戶端請求的信息,錯誤日誌記錄有關伺服器和應用程式問題的資訊。
設定Nginx存取日誌
每當處理客戶要求時,Nginx都會在存取日誌中產生一個新記錄。每個事件記錄都包含一個時間戳,並包含有關客戶端和所請求資源的各種資訊。訪問日誌可以顯示訪客的位置,訪客的造訪的頁面等。
log_format
指令允許你定義記錄日誌的格式。 access_log
指令啟用並設定日誌檔案的位置和使用的格式。
access_log
指令的最基本語法如下:
access_log log_file log_format;
其中 log_file
是日誌檔案的完整路徑, log_format
是日誌檔案使用的格式。可在 http
, server
或 location
指令的上下文中啟用存取日誌。
預設情況下,Nginx主設定檔中的 http
指令配置了全域存取日誌格式。
http { ... access_log /var/log/nginx/access.log; ... }
/etc/nginx/nginx.conf
為獲得更好的可維護性,建議為每個伺服器設定一個單獨的存取日誌檔案。在 server
指令中設定的 access_log
指令將覆寫在 http
指令中設定的 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
#如果未指定日誌格式,Nginx將使用預先定義的combined組合格式,如下所示:
log_format combined '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';
要變更日誌記錄格式,請覆寫預設設定或定義一個新設定。例如,定義一個名為 main
的新日誌記錄格式,它將使用新增 X-Forwarded-For
header的值來擴充 combined
格式,在 http
或 server
中新增下列定義指令:
log_format custom '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
若要使用新日誌格式,請在日誌檔案後指定其名稱,如下所示:
access_log /var/log/nginx/access.log custom;
雖然訪問日誌提供了非常有用的信息。但它會佔用磁碟空間,並可能影響伺服器效能。如果伺服器資源不足,且網站繁忙,則可能要停用存取日誌。為此,請將 access_log
偽指令的值設為 off
。理論上你不會出現這種情況,Nginx會自動刪除前期的日誌檔案:
access_log off;
設定錯誤日誌
Nginx將應用程式和常規伺服器錯誤的訊息寫入錯誤日誌文件。如果你在網頁應用程式中遇到錯誤,則錯誤日誌是你開始進行排查問題的第一個位置。 error_log
指令啟用並設定錯誤日誌的位置和嚴重性等級。它採用以下格式,可以在 http
, server
或 location
上下文中設定:
error_log log_file log_level
log_level
# 參數設定日誌記錄等級。以下是按嚴重性從低到高列出的等級:
debug info notice warn error crit alert emerg
每個日誌等級包括更高等級。例如,如果你將日誌等級設為 warn
,Nginx也會記錄 error
, crit
, alert
和 emerg
訊息。未指定 log_level
參數時,預設為 error
。預設情況下, error_log
指令在主nginx.conf檔案內的 http
指令上下文中定義:
http { ... error_log /var/log/nginx/error.log; ... }
/etc/nginx/nginx.conf與存取日誌相同,建議為每個伺服器設置一個單獨的錯誤日誌文件,該文件將覆蓋更高級別的設置如http指令上下文。例如,要將domain.com的錯誤日誌設定為 warn
,你可以使用:
http { ... error_log /var/log/nginx/error.log; ... server { server_name domain.com error_log /var/log/nginx/domain.error.log warn; ... } }
無論何時修改設定文件,都必須重新載入Nginx服務,以使變更生效。
日誌檔案的位置
在大多數Linux發行版中,例如Ubuntu ,CentOS和Debian。預設情況下,存取和錯誤日誌位於 /var/log/nginx
目錄中。
讀取並理解Nginx日誌檔案
你可以用 cat
, less
, grep
, #cut
, awk
等指令開啟和解析nginx日誌檔。以下是使用預設的Nginx日誌格式的存取日誌檔案的記錄:
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
以上是如何設定Nginx存取與錯誤日誌的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

在 Linux 中啟動 Nginx 的步驟:檢查 Nginx 是否已安裝。使用 systemctl start nginx 啟動 Nginx 服務。使用 systemctl enable nginx 啟用在系統啟動時自動啟動 Nginx。使用 systemctl status nginx 驗證啟動是否成功。在 Web 瀏覽器中訪問 http://localhost 查看默認歡迎頁面。

在 Linux 中,使用以下命令檢查 Nginx 是否已啟動:systemctl status nginx根據命令輸出進行判斷:如果顯示 "Active: active (running)",則 Nginx 已啟動。如果顯示 "Active: inactive (dead)",則 Nginx 已停止。

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

如何解決 Nginx 403 Forbidden 錯誤?檢查文件或目錄權限;2. 檢查 .htaccess 文件;3. 檢查 Nginx 配置文件;4. 重啟 Nginx。其他可能原因還包括防火牆規則、SELinux 設置或應用程序問題。

啟動 Nginx 服務器需要按照不同操作系統採取不同的步驟:Linux/Unix 系統:安裝 Nginx 軟件包(例如使用 apt-get 或 yum)。使用 systemctl 啟動 Nginx 服務(例如 sudo systemctl start nginx)。 Windows 系統:下載並安裝 Windows 二進製文件。使用 nginx.exe 可執行文件啟動 Nginx(例如 nginx.exe -c conf\nginx.conf)。無論使用哪種操作系統,您都可以通過訪問服務器 IP

解決 Nginx 跨域問題有兩種方法:修改跨域響應頭:添加指令以允許跨域請求,指定允許的方法和頭,以及設置緩存時間。使用 CORS 模塊:啟用模塊並配置 CORS 規則,允許跨域請求、方法、頭和設置緩存時間。

查看 Nginx 運行狀態的方法有:使用 ps 命令查看進程狀態;查看 Nginx 配置文件 /etc/nginx/nginx.conf;使用 Nginx 狀態模塊啟用狀態端點;使用 Prometheus、Zabbix 或 Nagios 等監控工具。
