มีวิธีบันทึก id เฉพาะสำหรับคำขอ nginx หรือไม่


12

มีโมดูลของบุคคลที่สามอยู่สองสามตัวสำหรับสิ่งนี้

อย่างไรก็ตามถ้าเป็นไปได้ฉันไม่ต้องการสร้าง nginx ซึ่งฉันเชื่อว่าเป็นข้อกำหนดในการใช้ทั้งสองโมดูล ความพยายามครั้งแรกของฉันคือการใช้$msecกับ$pidที่ไม่ได้ผล (ฉันมีกระบวนการให้บริการสองคำขอที่มิลลิวินาทีเดียวกัน) ฉันได้อ่านเกี่ยวกับและดูเหมือนว่าจะทำงานร่วมกับ$connection $msecจะใช้งานได้หรือมีวิธีที่ดีกว่าโดยไม่ใช้โมดูลของบุคคลที่สามหรือไม่

คำตอบ:


10

อัพเดตสำหรับ nginx เวอร์ชั่น v1.11 (พฤษภาคม 2559):

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

คุณสามารถใช้$request_id:

ตัวระบุคำขอที่ไม่ซ้ำกันสร้างขึ้นจาก 16 สุ่มสุ่มเป็นเลขฐานสิบหก (1.11.0)


สำหรับเวอร์ชันเก่า (<= 1.2.7) คุณสามารถใช้บางอย่างเช่น "$ pid- $ date_local" ซึ่งควรจะไม่ซ้ำกันมากพอสำหรับการใช้งานส่วนใหญ่
Bactisme

6

คุณสามารถใช้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

เราใช้สิ่งนี้ในการผลิตและมีความสุขมากกับการติดตามที่ดีกว่าที่เรามีในบริการแบ็กเอนด์ของเรา


1

หากคุณสามารถใช้nginx-extrasหรือperlใน nginx

จากนั้นคุณสามารถตั้งค่าตัวแปรคำขอโดยใช้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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.