ฉันจะดูว่าแฟล็ก Nginx ใดที่คอมไพล์ด้วยได้อย่างไร?


227

ฉันจะตรวจสอบโมดูลที่เพิ่มเข้าในการติดตั้ง nginx ได้อย่างไร?


7
อีกวิธีหนึ่งในการพูดแบบนี้คือ "ฉันจะดูได้อย่างไรว่าแฟล็ก Nginx ใดที่ถูกคอมไพล์ด้วย" แค่ต้องการเพิ่มมันเพื่อเพิ่มความสามารถในการค้นหา
นาธานลอง

คำตอบ:


291

nginx -Vจะแสดงรายการโมดูลที่กำหนดค่าทั้งหมด ไม่มีคำสั่งเปิดใช้งาน / โหลดอย่างชัดเจน


8
หมายเหตุสำหรับ noobs:หากไม่ได้ล็อกอินในฐานะผู้ใช้รูทคำสั่งจะเป็นsudo nginx -V
its_me

4
ฉันไม่จำเป็นต้องใช้sudoบน Ubuntu 14.04
Asfand Qazi

5
โปรดทราบว่าพารามิเตอร์นี้ต้องตรงตามตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก หากคุณใช้ตัวพิมพ์เล็ก "-v" คุณจะได้รับหมายเลขเวอร์ชั่นเท่านั้น ตัวพิมพ์ใหญ่ "-V" ให้การกำหนดค่าที่สมบูรณ์รวมถึงรายการของโมดูลทั้งหมดที่ใช้สำหรับการรวบรวมไบนารี Nginx
Illidan

1
ดูเหมือนว่าเหมือนบางระบบอาจไม่ได้$PATHตั้งค่าอย่างถูกต้องสำหรับผู้ที่ไม่ใช่ superusers-ถนัดทั้งหมดsbinไดเรกทอรีดังนั้นคุณอาจต้องระบุเส้นทางแบบเต็มของภูต (เช่น/usr/sbin/nginx -V) sudoจริงหรือเพียงแค่ใช้
cnst

@its_me ... คุณอาจไม่จำเป็นต้องใช้ sudo เพื่อทำงานnginx -V
Carson Reinke

64

หนึ่งซับที่แตกต่างได้:

2>&1 nginx -V | tr -- - '\n' | grep _module

สะดวกสำหรับการเปรียบเทียบสองสภาพแวดล้อม:

lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

แก้ไข:

ขอบคุณ Roman Newaza สำหรับการชี้ให้เห็นอย่างถูกต้องว่าสิ่งนี้มีการ--withoutรวบรวมธงโมดูล ฉันไม่ได้ใช้--withoutแฟล็กและมุ่งเน้นไปที่การรับรายการโมดูลดังนั้นฉันจึงไม่เข้าใจ หนึ่งซับสามารถแก้ไขได้เพื่อช่วยแฟล็กคอมไพล์ระหว่างการติดตั้ง 2 แบบดังนี้:

2>&1 nginx -V | tr ' '  '\n'

ซึ่งเหมือนกับ:

2>&1 nginx -V | xargs -n1

อาจเป็นไปได้ว่าการส่งผ่านsortคำสั่งปกติเพื่อรวบรวมแฟล็กการรวบรวมและtrอีกครั้งเพื่อแบ่งการมอบหมายลงในบรรทัดที่ต่างกันได้ ผลสุดท้าย:

lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)

ใช้งานได้หากsortทำงานเหมือนกันในทั้งโฮสต์ระยะไกล (เช่นเป็นทั้ง GNU หรือ BSD) หากคุณกำลังเปรียบเทียบ Linux กับ BSD (Mac OS X) เพียงแค่ย้าย| sort | tr = '\n'ชิ้นส่วนออกจากlsmodnเชลล์ภายในซึ่งsortจะสอดคล้องกัน:

lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn  | sort | tr = '\n')

เมสไซเออร์ แต่มันใช้งานได้


2
2>&1 nginx -V | tr -- - '\n' | grep _moduleคำสั่งนั้นผิดทั้งหมดเนื่องจากไม่มีรายการตัวเลือก * ตามที่ติดตั้ง!
Roman Newaza

คำตอบที่น่ากลัว ทำไมคุณถึงใส่ 2> & 1 ไว้ข้างหน้า จากสิ่งที่ฉันเห็นนั่นผิดปกติมากขึ้นหรือไม่
ขบวนแห่

@ MattTagg มันอยู่ข้างหน้าเท่านั้นจนกว่าจะมีการใช้งาน จากนั้นมันจะอยู่ที่ท้ายคำสั่งใดคำสั่งหนึ่ง
kmarsh

3
  • nginx -Vคำสั่ง (บนกรณี V) จะแสดงรายการโมดูลทั้งหมดเช่นเดียวกับตัวเลือกเวลารวบรวมอื่น ๆ :

    %nginx -V nginx version: nginx/1.2.2 built by gcc 4.2.1 20070719 TLS SNI support enabled configure arguments: --prefix=/var/www --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-log-path=logs/access.log --error-log-path=logs/error.log --http-client-body-temp-path=/var/www/cache/client_body_temp --http-proxy-temp-path=/var/www/cache/proxy_temp --http-fastcgi-temp-path=/var/www/cache/fastcgi_temp --http-scgi-temp-path=/var/www/cache/scgi_temp --http-uwsgi-temp-path=/var/www/cache/uwsgi_temp --user=www --group=www --with-http_gzip_static_module --with-http_ssl_module --with-http_stub_status_module --with-ipv6 --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module %

    โปรดทราบว่าไม่จำเป็นสำหรับsudoคำสั่งนี้เนื่องจากพลังของ superuser จะต้องใช้โดย nginx สำหรับการเปิดพอร์ตด้านล่างIPPORT_RESERVED(เช่นพอร์ตที่ต่ำกว่า 1024)และ / หรือไฟล์บันทึกบางไฟล์สำหรับการเขียน

    แต่ขึ้นอยู่กับคุณ$PATHการตั้งค่าที่คุณอาจจะต้องมีการระบุเส้นทางแบบเต็ม - เช่น/usr/sbin/nginx -Vจริงหรือใช้sudoสำหรับการมีที่เหมาะสมไดเรกทอรีจะรวมอยู่ใน/sbin/$PATH

  • เริ่มต้นด้วยการเปิดตัว nginx รุ่นใหม่ - ตั้งแต่nginx 1.9.11(กุมภาพันธ์ 2559) - โมดูลที่โหลดได้แบบไดนามิกได้รับการสนับสนุนเช่นกัน - http://nginx.org/r/load_module - ด้วยความช่วยเหลือของload_moduleคำสั่ง


1

nginx -V ไม่แสดงโมดูลทั้งหมดมันแสดงโมดูลประมาณ 20 โมดูลสำหรับฉัน

ฉันใช้strings /usr/sbin/nginx|grep _module|grep -v configure| sortรายการโมดูลทั้งหมด 200+ รายการใน nginx ของฉัน

ฉันพยายามด้วยobjdumpแต่ดูเหมือนว่า nginx ในการติดตั้งของฉันมีการถอดไบนารี

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