似乎有几个第三方模块
但是,如果可能的话,我不想重建nginx,我相信这是同时使用这两个模块的要求。我最初的尝试是使用$msec
with,$pid
但是没有成功(我有一个进程在同一毫秒内处理两个请求)。我已读过有关内容$connection
,似乎可以与结合使用$msec
。如果不使用第三方模块,这种方法还是有更好的方法?
似乎有几个第三方模块
但是,如果可能的话,我不想重建nginx,我相信这是同时使用这两个模块的要求。我最初的尝试是使用$msec
with,$pid
但是没有成功(我有一个进程在同一毫秒内处理两个请求)。我已读过有关内容$connection
,似乎可以与结合使用$msec
。如果不使用第三方模块,这种方法还是有更好的方法?
Answers:
nginx版本v1.11的更新(2016年5月):
http://nginx.org/zh_CN/docs/http/ngx_http_core_module.html#var_request_id
您可以使用$request_id
:
从16个随机字节生成的唯一请求标识符,以十六进制(1.11.0)
您可以使用nginx-extras
和使用嵌入式Perl或Lua。
$ sudo apt-get install libossp-uuid-perl
在您的nginx配置中:
perl_require "Data/UUID.pm";
perl_set $request_uuid 'sub {
my $ug = new Data::UUID;
return $ug->create_str();
}';
然后对于给定的location
:
proxy_set_header Request-Id $request_uuid
如果可以在nginx中使用nginx-extras或perl。
然后您可以使用perl_set设置请求变量
perl_set $uuid 'sub {
return join "", map{(a..z,A..Z,0..9)[rand 62]} 0..7;
}';
如果您需要更多详细信息,请访问:http: //yozik04.blogspot.com/2014/12/nginx-request-id-using-perl.html