सवाल मैं कैसे देख सकता हूं कि Nginx किस झंडे के साथ संकलित किया गया था?


मैं कैसे जांच सकता हूं कि nginx अधिष्ठापन में कौन से मॉड्यूल जोड़े गए हैं?


211
2018-01-17 20:42


मूल


यह कहने का एक और तरीका यह है कि "मैं कैसे देख सकता हूं कि निगेंक्स किस झंडे से संकलित था?" बस खोज योग्यता बढ़ाने के लिए इसे जोड़ना चाहता था। - Nathan Long


जवाब:


nginx -V सभी कॉन्फ़िगर किए गए मॉड्यूल सूचीबद्ध करेगा। कोई स्पष्ट सक्षम / लोड कमांड नहीं है।


268
2018-01-17 21:35



नोबस के लिए नोट: यदि रूट उपयोगकर्ता के रूप में लॉग इन नहीं है, तो आदेश होगा sudo nginx -V - its_me
मुझे उपयोग करने की आवश्यकता नहीं थी sudo उबंटू 14.04 पर - Asfand Qazi
कृपया ध्यान दें कि यह पैरामीटर केस संवेदनशील है। यदि आप लोअर केस "-v" का उपयोग करते हैं तो आपको केवल संस्करण संख्या मिलेगी। ऊपरी मामला "-V" आपको पूर्ण कॉन्फ़िगरेशन देता है जिसमें Nginx बाइनरी संकलित करने के लिए उपयोग किए जाने वाले सभी मॉड्यूल की सूची शामिल है। - Illidan
ऐसा लगता है जैसे कुछ सिस्टम में नहीं हो सकता है $PATH गैर-सुपरसर्स के लिए ठीक से सेट करें, सभी को छोड़ दें sbin निर्देशिका, इसलिए, आपको डेमन का पूरा पथ निर्दिष्ट करना पड़ सकता है (उदा। /usr/sbin/nginx -V), या वास्तव में बस उपयोग करें sudo। - cnst


डिफ-सक्षम एक-लाइनर:

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)

संपादित करें:

धन्यवाद, रोमन न्यूजा, सही ढंग से इंगित करने के लिए कि इसमें शामिल है --without मॉड्यूल संकलन झंडे। मैं उपयोग नहीं कर रहा हूँ --without झंडे और मॉड्यूल सूची प्राप्त करने पर ध्यान केंद्रित किया गया था, इसलिए मैंने इसे पकड़ नहीं लिया; एक-लाइनर को 2 इंस्टॉलेशन के बीच diff संकलित झंडे की मदद करने के लिए संशोधित किया जा सकता है, जैसे:

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

जो जैसा ही है:

2>&1 nginx -V | xargs -n1

शायद इसके माध्यम से पाइप भी sort संकलन झंडे के idiosyncratic आदेश सामान्य करने के लिए tr फिर अलग-अलग लाइनों पर असाइनमेंट को विभाजित करने के लिए। अंतिम परिणाम:

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

यह काम करता है अगर sort रिमोट होस्ट दोनों पर समान व्यवहार करता है (यानी वे जीएनयू या बीएसडी दोनों हैं)। यदि आप लिनक्स से बीएसडी (मैक ओएस एक्स) की तुलना कर रहे हैं, तो बस इसे ले जाएं | 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')

मेसीयर, लेकिन यह काम करता है।


60
2018-01-25 20:30



2>&1 nginx -V | tr -- - '\n' | grep _module कमांड पूरी तरह से गलत है क्योंकि यह बिना सूचीबद्ध विकल्पों के सूचीबद्ध है! - Roman Newaza
भयानक जवाब। ब्याज से बाहर आप 2> और 1 सामने क्यों डालते हैं। मैंने जो देखा है उससे अधिक असामान्य है? - cavalcade
@MattTagg यह केवल तब तक सामने है जब तक इसका उपयोग नहीं किया जाता है। फिर यह किसी भी आदेश के अंत में है। - kmarsh


  • nginx -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 इस आदेश के लिए, सुपरसियर शक्तियों को केवल नीचे बंदरगाहों को खोलने के लिए nginx द्वारा आवश्यकता होगी IPPORT_RESERVED (उदाहरण के लिए, 1024 से नीचे बंदरगाहों) और / या लेखन के लिए कुछ लॉग-फाइलें।

    हालांकि, आपके आधार पर $PATH सेटिंग्स, आपको या तो पूर्ण पथ निर्दिष्ट करने की आवश्यकता हो सकती है - उदा। /usr/sbin/nginx -V, या वास्तव में उपयोग करें sudo उचित होने के लिए /sbin/ निर्देशिका में शामिल किया जाना चाहिए $PATH

  • नए nginx रिलीज से शुरू - के बाद से nginx 1.9.11 (फरवरी 2016) - गतिशील रूप से लोड करने योग्य मॉड्यूल अब समर्थित हैंभी - http://nginx.org/r/load_module - की मदद से load_module निर्देश।


3
2017-08-26 19:06