Nginx 有 11 个 HTTP 阶段,如官方文档所述:http://nginx.org/en/docs/dev/development_guide.html#http_phases.
最后两个阶段如下。
NGX_HTTP_CONTENT_PHASE
生成响应(例如从上游接收)。NGX_HTTP_LOG_PHASE
将请求打印至 access.log
。我有两个问题。
我正在尝试回答我自己的问题。
在生成响应之后,Nginx 似乎没有“响应阶段”。为什么?
不存在“响应阶段”。响应发送隐含在“内容阶段”中。
由于没有响应阶段,Nginx 是在响应发送到客户端之后还是之前打印访问日志?
Ningx在响应发送到客户端后写入访问日志,可以通过access log_format进行验证。在访问日志中,我们可以记录
$bytes_sent
和$request_time
。这两个值只有在响应完全发送到客户端后才可用。