Ubuntu
僅針對某些請求單獨的 Nginx 訪問日誌文件
據我所知,Nginx 預設支持 2 個日誌文件:(
error_log
跟踪與 Nginx 伺服器本身相關的問題)和access_log
(跟踪 Nginx 處理的請求)。雖然可以access_log
使用log_format
指令控制格式,但我未能找到一種僅將某些請求記錄到單獨文件的方法,因此想問一下關於 SF 的問題,作為未來讀者的參考:有沒有辦法將某些請求記錄到與定義的不同的日誌文件中
access_log
?僅供參考,這個問題背後的原因是我有一個規則,它拒絕訪問帶有 200 的不需要的爬蟲(因為 403 會給他們一個暗示他們被阻止的提示),並且從這些請求中過濾出來
access_log
變得更加困難。
cjc
讓我走上正軌。access_log
在語句中單獨使用if
是不可能的(你會得到一個nginx: [emerg] "access_log" directive is not allowed here
錯誤)。所以解決方法如下:if ($http_user_agent ~* (crawler) ) { set $crawler 'yes'; } location ~ .* { if ($crawler = 'yes') { access_log /var/log/nginx/blockedbots.log; return 200; } }
access_log 支持以下情況:
(access_log 路徑
$$ format [buffer=size [flush=time $$]$$ if=condition $$];)
access_log /var/.... if $crawler;
來源: