Có cách nào để đăng nhập một id yêu cầu duy nhất cho nginx không?


12

Dường như có một vài mô-đun của bên thứ ba cho việc này

Tuy nhiên, nếu có thể tôi không muốn xây dựng lại nginx, mà tôi tin rằng, là một yêu cầu để sử dụng cả hai mô-đun này. Thử ban đầu của tôi là sử dụng $msecvới $pidtuy nhiên điều đó không làm việc ra (tôi đã có một quá trình phục vụ hai yêu cầu tại millisecond giống nhau). Tôi đã đọc về $connectionvà có vẻ như nó sẽ hoạt động cùng với $msec. Điều này sẽ hoạt động hay có cách nào tốt hơn mà không cần sử dụng các mô-đun của bên thứ ba?

Câu trả lời:


10

Cập nhật cho nginx phiên bản v1.11 (tháng 5 năm 2016):

http://nginx.org/en/docs/http/ngx_http_core_module.html#var_Vquest_id

Bạn có thể sử dụng $request_id:

mã định danh yêu cầu duy nhất được tạo từ 16 byte ngẫu nhiên, theo hệ thập lục phân (1.11.0)


Đối với phiên bản cũ (<= 1.2.7), bạn có thể sử dụng một cái gì đó như "$ pid- $ date_local" đủ độc đáo cho hầu hết việc sử dụng.
Bactisme

6

Bạn có thể sử dụng nginx-extrasvà sử dụng nhúng Perl hoặc Lua.

$ sudo apt-get install libossp-uuid-perl

Trong cấu hình nginx của bạn:

perl_require "Data/UUID.pm";
perl_set $request_uuid 'sub {

    my $ug = new Data::UUID;
   return $ug->create_str();
}';

Và sau đó cho một location:

proxy_set_header Request-Id $request_uuid

Chúng tôi đang sử dụng điều này trong sản xuất và rất hài lòng với dấu vết tốt hơn mà chúng tôi có trên các dịch vụ phụ trợ của mình.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.