在 nginx 中,$request_id 是一个系统变量,它可以用来唯一地标识一个请求。通过使用$request_id,可以方便快捷地实现链路追踪。
要启用$request_id,需要在 nginx 配置文件中添加以下配置:
http {
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$request_id"';
...
server {
...
location / {
...
set $request_id $request_id-$server_name-$request_time;
...
}
}
}
上述配置中,log_format 中包含了$request_id,用于记录日志,以便追踪请求的状态。
在 location 中,通过 set 命令设置$request_id的值。这里使用了以下变量来生成唯一的请求 ID:
- $request_id:系统变量,它的值在每个请求中都会被赋予一个唯一的标识符。
- $server_name:该变量表示当前请求所匹配的 server 块的 server_name,用于区分不同的服务。
- $request_time:该变量用于生成时间戳,在同一秒内的请求将被区分开来。
通过以上配置,每个请求都将被赋予一个唯一的$request_id,我们可以使用这个 ID 进行链路追踪。