Nginx में विभिन्न उपयोगकर्ताओं के साथ कई VHosts होस्ट करें

दुनिया में सबसे सामान्य बात जब आपके पास सर्वर होता है सुरक्षा और अधिक सुरक्षा के बारे में सोचने के लिए, तो आप कभी भी पागल नहीं हो सकते the

कुछ हद तक सामान्य अभ्यास और कुछ भी नहीं करने की सिफारिश की गई है, सभी डेटाबेस के लिए एक ही उपयोगकर्ता का उपयोग करना है, अगर जड़ का उपयोग किया जाता है तो इससे भी बदतर, जो अविश्वसनीय लग सकता है, वे हैं जो (योनि या अज्ञानता के कारण) ऐसा करो, मैंने पहले से ही इस बारे में बात की कि आपको इस तरह से कार्य क्यों नहीं करना चाहिए एक और पोस्टअब यह समझाने का समय है कि अलग-अलग उपयोगकर्ताओं में वेब सर्वर प्रसंस्करण को अलग करना कैसे और क्यों बेहतर है, इस बार इसका उपयोग किया जाएगा nginx.

समर्पित करें

उपयोगकर्ता और वेब सर्वर क्या है?

इसे संक्षिप्त और सरल तरीके से समझाने के लिए, वेब सर्वर (अपाचे, नग्नेक्स, जो भी हो) को सिस्टम में प्रक्रियाएं खोलने की जरूरत है, प्रक्रियाएं वही होंगी जो एचडीडी (छवियों, आदि) से फाइलें लेती हैं और उन्हें बनाती हैं। ग्राहक के ब्राउज़र के लिए उपलब्ध है। वेब सर्वर केवल फ़ाइलों को नहीं ले सकता है और उनमें से कोई भी नहीं होने के कारण हेरफेर कर सकता है, अर्थात, इसे एक उपयोगकर्ता की आवश्यकता है जो ऐसा होगा जो अंत में यह सब करेगा, और वह उपयोगकर्ता वह है जिसके बारे में मैं बात कर रहा हूं, क्या आप समझते हैं?

कई उपयोगकर्ताओं में अलग होने के बारे में क्या है?

मान लीजिए कि हमारे सर्वर पर हमारी 2 वेबसाइटें हैं, हमारी जो एक व्यक्तिगत परियोजना है, और एक अन्य (आइए कल्पना करें कि यह हमारी प्रेमिका या भाई है) का है। यहां तक ​​कि जब हम उन्हें एक्सेस करने के लिए अलग-अलग डेटाबेस और अलग-अलग उपयोगकर्ताओं का उपयोग करते हैं, तो अंत में दोनों वेबसाइटों की फ़ाइलों को एक ही उपयोगकर्ता द्वारा हेरफेर किया जाता है, PHP प्रसंस्करण सभी साइटों के लिए एक ही उपयोगकर्ता द्वारा प्रबंधित किया जाता है (यह आमतौर पर www-data है) का है। यह एक गैर-अनुशंसित अभ्यास है, सब कुछ अच्छी तरह से अलग होना बेहतर है, जैसा कि एक पुरानी कहावत है, यह खेद से सुरक्षित होना बेहतर है।

ठीक है, मैं समझता हूं कि मैं इसे नगनेक्स के साथ कैसे करता हूं

2000px-Nginx_logo.svg

ध्यान देने वाली पहली बात यह है कि नग्नेक्स का अपना मॉड्यूल नहीं है जो अपाचे के रूप में PHP प्रसंस्करण को संभालता है, नग्नेक्स के लिए हमें PHP-CGI या PHP-FPM का उपयोग करने की आवश्यकता है, जो अपाचे की तुलना में ठीक (या बेहतर) काम करता है। इसलिए विभिन्न उपयोगकर्ताओं में PHP प्रसंस्करण को अलग करने के लिए, हमें PHP कॉन्फ़िगरेशन फ़ाइलों (सीजीआई या एफपीएम) में लाइनों को बदलने की आवश्यकता होगी, नग्नेक्स ही नहीं।

मान लीजिए आप उपयोग करते हैं पीएचपी-एफ पी एम, हम एक विन्यास फाइल बनाएंगे पूल एक विशिष्ट साइट के लिए, अर्थात्, एक पूल PHP-FPM से PHP प्रसंस्करण को अलग करने का तरीका है, लेकिन हम भागों में जाते हैं।

1. पहले हमें पता होना चाहिए कि हम सिस्टम के किस उपयोगकर्ता का उपयोग करेंगे, मैं यह मानूंगा कि हमारे पास अभी भी कोई निर्मित और अच्छा नहीं है, आइए इसे बनाएं:

निम्नलिखित सभी आदेशों को प्रशासनिक विशेषाधिकारों के साथ निष्पादित किया जाना चाहिए, या तो सीधे रूट के साथ या sudo का उपयोग करके

adduser blog

हम उपयोगकर्ता बनाने, पासवर्ड दर्ज करने आदि की सामान्य प्रक्रिया शुरू करेंगे।

मैं उपयोगकर्ता को सिर्फ उदाहरण का अनुसरण करने के लिए ब्लॉग करता हूं, कि पहली साइट जिसे हम होस्ट करेंगे वह एक ब्लॉग होगा, अच्छी तरह से ... प्रत्येक उपयोगकर्ता को यह जानने के लिए कि कौन सी साइट संबंधित है

1. सबसे पहले /etc/php5/fpm/pool.d/ पर जाएं:

cd /etc/php5/fpm/pool.d/

2. अब, हम blog.conf नामक एक फाइल बनाएंगे:

touch blog.conf

3. अब हम उस पूल का कॉन्फ़िगरेशन डालेंगे जिसका उपयोग हम VHost ब्लॉग के लिए करेंगे:

उदाहरण के लिए नैनो ... के साथ blog.conf फ़ाइल संपादित करें: सुडो नैनो ब्लॉग
[ब्लॉग] उपयोगकर्ता = ब्लॉग
समूह = ब्लॉग
सुनो = / var / run / php5-fpm-ब्लॉग.sock Listen.owner = ब्लॉग
सुनो.ग्रुप = ब्लॉग
दोपहर = onememand pm.max_children = 96 chdir = /

ध्यान दें: मैं उन्हें लाल रंग में चिह्नित करता हूं जो वे पहले बनाए गए उपयोगकर्ता के आधार पर संशोधित करना चाहिए। उदाहरण के लिए, यदि वे किसी अन्य उपयोगकर्ता के साथ एक और VHost बनाते हैं (उदाहरण के लिए मंच) तो ब्लॉग के बजाय बस लाइनों में से प्रत्येक में मंच, यह समझा जाता है?

4. एक बार नए पूल का विन्यास (blog.conf फ़ाइल जिसे हमने अभी बनाया और संपादित किया है), यह इस साइट के लिए उस VHost के लिए एक अलग जुर्राब का उपयोग करने के लिए Nginx VHost को बताने की बारी है। उपयोग किया जाने वाला जुर्राब वह होगा जिसे हमने पहले घोषित किया था (/var/run/php5-fpm-blog.sock)। आइए Nginx VHost को संपादित करें और PHP प्रसंस्करण भाग में, हम उस मोज़े का उपयोग करने का संकेत देते हैं। उदाहरण के लिए:

स्थान ~ \ .php $ {अगर (-f $ request_filename) {वापसी 404; }
fastcgi_pass unix: / var / run / php5-fpm-ब्लॉगजुर्राब;
fastcgi_params शामिल करें; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_read_timeout 300; }

जैसा कि आप देख सकते हैं, मैं इंगित करता हूं कि उस VHost की PHP प्रसंस्करण (वे पंक्तियाँ उदाहरण के लिए / etc / nginx / साइट्स-सक्षम / vhost-blog में हैं) इसे /var/run/php5-fpm-blog.sock में पाए जाने वाले मोज़े के साथ करें ... जो कि हमने पहले बनाया था जब /etc/php5/fpm/pool.d/blog.conf संपादन ... यह समझ में नहीं आया?

5. एक बार यह हो जाने के बाद, हम दोनों सेवाओं (php5-fpm और nginx) और वॉइला को फिर से शुरू करते हैं, हम देखेंगे कि उस साइट (vhost) की प्रोसेसिंग www-data या रूट या किसी और के द्वारा नहीं की जाती है, लेकिन उपयोगकर्ता द्वारा कि हम पहले से परिभाषित।

यहाँ मैं आपको एक का उत्पादन दिखाता हूँ पीएस ऑक्स | जीआरपी एफपीएम मेरे नोड के सर्वर में से एक पर:

ps aux | grep fpm ebook 586 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm: पूल ebook 589 0.0 0.0 349360 1204? S Mar30 0:00 php-fpm: पूल ebook www 608 0.0 0.2 350084 5008? S Mar30 0:00 php-fpm: पूल www www 609 0.0 0.2 350600 5048 30? S Mar0 00:3 php-fpm: पूल www tv611 0.0 0.0 349360 1204 30? S Mar0 00:3 php-fpm: पूल tv3 tv615 0.0 0.0 349360 1204 30? S Mar0 00:3 php-fpm: पूल टीवी 1818 पत्रिका 1.7 1.7 437576 36396 09? एस 55:0 46:2264 php-fpm: पूल पत्रिका पत्रिका 1.9 1.7 437332 35884 10? S 15:0 26:2338 php-fpm: पूल पत्रिका शिष्य 4.3 1.0 428992 22196 10? S 18:0 53:2413 php-fpm: पूल पुतली पत्रिका 1.8 1.7 437764 36152 10? S 22:0 18:2754 php-fpm: पूल गुट्ल पत्रिका 3.5 1.3 356724 27164 10? S 38:0 00:5624 php-fpm: पूल गुट्ल कॉग 0.0 1.0 365168 22696 28? एस Apr0 16:7900 php-fpm: पूल क्रीग पुतली 0.3 2.5 457052 52444 25? S Apr20 23:11021 php-fpm: पूल पुतली शिष्य 0.4 2.5 458316 52864 28? एस Apr5 57:11254 php-fpm: पूल पुतली 0.0 1.0 363152 21708 28? एस Apr0 12:13184 php-fpm: पूल कॉग क्रेंग 0.0 1.0 362872 21360 28? एस Apr0 08:XNUMX php-fpm: पूल क्रीग

जैसा कि आप देख सकते हैं ... Nginx + PHP-FPM का उपयोग कर उपयोगकर्ताओं द्वारा PHP प्रसंस्करण को अलग करना वास्तव में आसान है, वहाँ आप देखते हैं कि कई पूल हैं, क्योंकि कई उपयोगकर्ता हैं।

निष्कर्ष

जब सर्वर की बात आती है, तो आप कभी भी पागल नहीं होते हैं ... सुरक्षा के साथ खेलने के लिए कुछ नहीं है, जितना अधिक हम हमेशा अपने सर्वर और उनकी सेवाओं की सुरक्षा में सुधार करने की कोशिश करते हैं, कम संभावना है कि हम एक (सफल) से डर जाएंगे हैक प्रयास या कुछ इसी तरह 😉


लेख की सामग्री हमारे सिद्धांतों का पालन करती है संपादकीय नैतिकता। त्रुटि की रिपोर्ट करने के लिए क्लिक करें यहां.

9 टिप्पणियाँ, तुम्हारा छोड़ दो

अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।

  1.   घनाकार कहा

    गारा, वर्तमान समय में इन चीजों को जितना संभव हो उतना स्वचालित होना चाहिए, मैं आपको सलाह देता हूं कि आप प्रयास करें। एजेंट के बिना, आपको दूरस्थ होस्ट पर केवल अजगर की आवश्यकता होती है, कॉन्फ़िगर करने के लिए बहुत सरल, यमल फाइलें, जिन्जा टेम्पलेट।

    https://github.com/ansible/ansible-examples/tree/master/wordpress-nginx

    1.    KZKG ^ गारा कहा

      आइए देखें, यह हमेशा केवल वर्डप्रेस साइटों के लिए नहीं है, और ... हाहा शायद अन्सिबल क्लिक वोलाओ, लेकिन मैं यह जानना पसंद करता हूं कि सर्वर पर सब कुछ कैसे काम करता है, भले ही मुझे एक नया मोजे बनाने में 1 मिनट बिताना पड़े और एक नया VHost 😀

      1.    घनाकार कहा

        Ansible के साथ आप सब कुछ स्वचालित करते हैं, आप व्यावहारिक रूप से जो भी आप चाहते हैं, इस पद्धति का लाभ यह है कि आप अभ्यास को एनकैप्सुलेट करते हैं और फिर इच्छाशक्ति पर अमल करते हैं, कल्पना करें कि आपके पास एक बहुत भरी हुई साइट है और आप एप्लिकेशन सर्वर के बीच लोड संतुलन साधना चाहते हैं, ये ठीक उसी तरह कॉन्फ़िगर किया जाना चाहिए जिसे आप एक चरण को छोड़ नहीं सकते हैं या उनमें से किसी एक में कुछ भी अलग नहीं कर सकते हैं, क्या आप चरण दर चरण प्रक्रिया को कई बार करने की कल्पना कर सकते हैं? Ansible के साथ यह इन्वेंट्री फ़ाइल और Voilá में होस्टनाम जोड़ने के रूप में सरल है !!

        http://www.ansible.com/how-ansible-works

      2.    घनाकार कहा

        Ansible पंथ के बारे में क्षमा करें, लेकिन यह इन तकनीकों में से एक है जिसे आप खोजते हैं और आप चाहते हैं कि हर कोई अब इसका उपयोग करे क्योंकि यह बहुत अच्छा और व्यावहारिक है, यह ऐसा है जब आप NGINX की खोज करते हैं और आप चाहते हैं कि आपके सभी मित्र तुरंत Apache छोड़ दें।

        https://speakerdeck.com/slok/ansible-all-the-things

  2.   मस्तारविन कहा

    मुझे यकीन है कि मेरी पोस्ट इस पूरक ...
    http://blog.ngen.com.ar/configuracion-segura-de-un-webserver-con-nginx-php-fpm/

  3.   rots87 कहा

    मैं एक डेवलपर हूं (या होने के लिए अध्ययन करता हूं) और एनजीआईएक्स के साथ मुझे nginx + php-fpm को कॉन्फ़िगर करते समय बहुत सारी समस्याएं थीं। मुझे पता है कि आर्चलिनक्स डिस्ट्रो इसे सर्वर के रूप में बनाने के लिए सबसे अच्छा नहीं है, लेकिन हर बार जब मैंने एनक्सिक्स या पीएचपी का एक संस्करण अपडेट किया, तो सब कुछ हमेशा दुर्घटनाग्रस्त हो गया, इसलिए मैंने प्रयास करने का प्रयास किया ... आज के लिए मैं क्लासिक अपाचे + के साथ रहता हूं PHP लेकिन मैं देखूंगा कि क्या मैं फिर से NGIX के आसपास जाता हूं ... शायद एक वर्चुअल मशीन में

    1.    घनाकार कहा

      मानसिकता थोड़ी बदल जाती है, नग्नेक्स स्थिर सामग्री का काम करता है और php-fpm के लिए एक रिवर्स प्रॉक्सी के रूप में कार्य करता है जो असली PHP चलाता है, आपको भागों में शुरू करना होगा और चरण दर चरण तैनाती को प्राप्त करना होगा, तैनात करने के लिए एक गाइड की तलाश करें फ्रेमवर्क जिसके साथ आप काम करते हैं, हर एक का विस्तार जनता, स्थिर, संसाधनों आदि के नामों से होता है ...

  4.   गुमनाम कहा

    समुदाय को "परिचारिका" शब्द को छोड़ने का बड़ा एहसान करो, जो मौजूद नहीं है। भगवान द्वारा, "होस्ट" कहना इतना मुश्किल है?

  5.   Wil कहा

    अभिवादन, आपके उदाहरण के बाद, मैं जानना चाहूंगा कि क्या केवल वर्डप्रेस बैकपेन के लिए एक पूल बनाया जा सकता है, अर्थात, बैक-इन के लिए आने वाले कनेक्शन के लिए एक नया सॉकेट बनाने वाला wp-admin के लिए

    स्थान / wp-admin {
    root /var/www/yoursite.com/wp-admin;
    सूचकांक index.php index.html index.htm;
    स्थान ~ ^ / wp-admin /(.+। php) $ {
    try_files $ uri = 404;
    root /var/www/yoursite.com/wp-admin;
    / etc / nginx / fastcgi_params शामिल करें;

    fastcgi_pass server unix:/run/php5-fpm2.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 256 4k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_read_timeout 1240;
    }
    location ~* ^/wp-admin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
    root /var/www/tusitio.com/wp-admin/;
    }
    }