nginx中已經提供了訪問日志的功能,主要對客戶端的訪問狀態等進行記錄,比如響應給客戶端的狀態碼,請求uri,請求協議等。而對于回源(或者回后端)的請求狀態記錄較少,如后端的地址、端口、狀態碼等這些有記錄。在反向代理場景中很大可能會在回源(或者回后端)時修改請求uri、請求host等信息,基于這一需求可以通過回源日志的方式對其進行記錄。
回源日志可以采用單獨的功能模塊來實現,需要掛載到log階段。主要記錄的是回源(或者回后端)的狀態,包括請求uri、請求頭、請求協議、后端地址、后端響應狀態碼、后端的響應頭、連接復用狀態等。由于回源(或者回后端)時,由于源站的連接或者響應錯誤,會導致nginx進行重試,那么更好的展示方式是每次重試打印一條回源日志,而不是跟訪問日志一樣,把多次重試的狀態記錄到一個字段當中,不方便查看或者自動化的分析。
nginx的lua擴展功能可以提供高效的功能開發,所以針對這一特性,可以提供日志變量來保存相應的狀態,比如 $origin_addr、$origin_status 。以及通過回源日志的格式來實現不同客戶的定制化日志需求。