2016-04-11 12 views
16

परिचय

nginx संस्करण 1.9.11 और upwarts से, एक नई सुविधा शुरू की है साथ गतिशील मॉड्यूल सक्षम करने के लिए।

गतिशील मॉड्यूल के साथ, आप वैकल्पिक रूप से अलग-अलग साझा ऑब्जेक्ट फ़ाइलों को रनटाइम पर मॉड्यूल के रूप में लोड कर सकते हैं - दोनों तृतीय-पक्ष मॉड्यूल और कुछ मूल NGINX मॉड्यूल। (source)
कैसे एक मौजूदा nginx स्थापना

मेरे सेटअप और समस्या

मैं nginx मुख्य लाइन (वर्तमान में 1.9.14) से स्थापित किया है, तो यह गतिशील मॉड्यूल का उपयोग करने के लिए सक्षम है।

nginx -V 
nginx version: nginx/1.9.14 
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1) 
built with OpenSSL 1.0.1f 6 Jan 2014 
TLS SNI support enabled 
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules ... --with-http_geoip_module=dynamic ... 

नोट --with-http_geoip_module=dynamic जो मॉड्यूल मैं की जरूरत है (गतिशील) को लोड करता है: यह भी मॉड्यूल मैं dynamicly सक्षम करना चाहते हैं। दुर्भाग्यवश, दस्तावेज़ में कमी है (कुछ विवरण) और मैं इसे सेट करने में असमर्थ हूं।
मेरे पास एक मौजूदा एनजीआईएनएक्स स्थापना है (स्रोत से नहीं)। लेकिन जहां तक ​​मैं समझ सकता हूं मुझे बस मॉड्यूल बनाने की आवश्यकता है, जेनरेट की गई मॉड्यूल फ़ाइल को सही NGINX फ़ोल्डर में रखें और इसे कॉन्फ़िगरेशन फ़ाइल में सक्षम करें।

क्या मैं अब तक

मैं किसी दूसरी मशीन पर यह परीक्षण किया की कोशिश की (एक ही विन्यास के साथ नहीं, बल्कि एक उत्पादन मशीन), लेकिन मुझे ngx_http_geoip_module.so फ़ाइल नहीं दिख रहा। आदेशों मैं प्रयोग किया है:

wget http://nginx.org/download/nginx-1.9.14.tar.gz 
tar -xzf nginx-1.9.14.tar.gz 
cd nginx-1.9.14/ 
./configure --with-http_geoip_module=dynamic 

सवाल

  • यह एक समस्या यह है कि मैं एक प्रणाली है कि nginx है पर मॉड्यूल बनाने की कोशिश है स्थापित नहीं स्रोत से?
  • मेरे आदेशों द्वारा उत्पन्न कोई .so फ़ाइल क्यों नहीं है?

उत्तर

14

मैं एक ही सवाल था स्थापित nginx मॉड्यूल-GeoIP, और @vladiastudillo जवाब मुझे लापता टुकड़ा था।

पहले nginx स्थिर रेपो जोड़ें:

sudo add-apt-repository ppa:nginx/stable 

तो उपयुक्त अद्यतन चलाएँ:

sudo apt-get update 

और nginx GeoIP मॉड्यूल मिलती है:

sudo apt-get install nginx-module-geoip 

यह डाउनलोड करेगा और लोड मॉड्यूल /usr/lib/nginx/modules


nginx मॉड्यूल लोड करने के

खुला nginx.conf:

load_module "modules/ngx_http_geoip_module.so"; 

मॉड्यूल लोड किया जाएगा, तो आप फिर से लोड होता है:

sudo nano /etc/nginx/nginx.conf 

ऐड मुख्य संदर्भ में नीचे जोड़ने विन्यास या nginx पुनरारंभ करें।

गतिशील रूप से एक मॉड्यूल को "अनलोड" करने के लिए, load_module निर्देश को टिप्पणी या निकालें और nginx कॉन्फ़िगरेशन को पुनः लोड करें।

+0

मैं nginx फिर से स्थापित करने की आवश्यकता है पीपीए से? या उबंटू से मानक एनजीआईएनएक्स पर्याप्त है? – yoano

+0

यदि एनजीआईएनएक्स गतिशील मॉड्यूल के साथ बनाया गया है तो आपको पुनर्स्थापित करने की आवश्यकता नहीं है। उपलब्ध मॉड्यूल को जांचने के लिए 'nginx -V' टाइप करें और गतिशील स्ट्रिंग की जांच करें। – miyuru

+0

मुख्य संदर्भ कहां है? –

0

मैं एक ही मुद्दा था, तो आप के साथ अपने ubuntu संस्करण के लिए http_geoip_module lib स्थापित करने के लिए है:

$ sudo apt-get

+1

मैं अपने आदेश कोशिश की, लेकिन मुझे मिल गया "पैकेज सूचियों पढ़ रहा है ... हो गया बिल्डिंग निर्भरता पेड़ पढ़ना राज्य सूचना ... हो गया ई: पैकेज nginx मॉड्यूल-GeoIP पता लगाने में असमर्थ" – yoano

4

इस मिले थोड़ा यम अपडेट के बाद अमेज़न लिनक्स 2016.09, अमेज़न लिनक्स 2016.03 पर अलग होने की।

आप इस समय से आगे अपने EC2 उदाहरण sudo yum search nginx-mod-http-geoip पर इस आदेश का उपयोग करके इस बात की पुष्टि कर सकते हैं और आप nginx-mod-http-geoip.x86_64 : Nginx HTTP geoip module

इन मामलों में की बारीकियों के साथ जवाब में एक N/S matched: nginx-mod-http-geoip प्रविष्टि देखेंगे, स्थापित nginx संस्करण 1.10.1 हो जाएगा । जब यह सच है, आप सरल nginx GeoIP मॉड्यूल अमेज़न के मौजूदा यम रेपो से के माध्यम से स्थापित कर सकते हैं:

sudo yum install nginx-mod-http-geoip

फिर अपने nginx.conf साथ मॉड्यूल सहयोगी और मुख्य संदर्भ में इस लाइन रखने

include /usr/share/nginx/modules/mod-http-geoip.conf;

(ध्यान दें कि यह मुख्य उत्तर से काफी अलग है - इसमें आपके पास nginx.conf में एक प्रविष्टि है जो *.conf फ़ाइल पर इंगित करती है जो *.so फ़ाइल को इंगित करती है)