nginx中已经提供了访问日志的功能,主要对客户端的访问状态等进行记录,比如响应给客户端的状态码,请求uri,请求协议等。而对于回源(或者回后端)的请求状态记录较少,如后端的地址、端口、状态码等这些有记录。在反向代理场景中很大可能会在回源(或者回后端)时修改请求uri、请求host等信息,基于这一需求可以通过回源日志的方式对其进行记录。
回源日志可以采用单独的功能模块来实现,需要挂载到log阶段。主要记录的是回源(或者回后端)的状态,包括请求uri、请求头、请求协议、后端地址、后端响应状态码、后端的响应头、连接复用状态等。由于回源(或者回后端)时,由于源站的连接或者响应错误,会导致nginx进行重试,那么更好的展示方式是每次重试打印一条回源日志,而不是跟访问日志一样,把多次重试的状态记录到一个字段当中,不方便查看或者自动化的分析。
nginx的lua扩展功能可以提供高效的功能开发,所以针对这一特性,可以提供日志变量来保存相应的状态,比如 $origin_addr、$origin_status 。以及通过回源日志的格式来实现不同客户的定制化日志需求。