Nginx मा बिभिन्न प्रयोगकर्ताहरूसँग बहु VHosts होस्ट गर्नुहोस्

संसारको सबैभन्दा सामान्य कुरा जब तपाईंसँग एक सर्भर हुन्छ सुरक्षा र अधिक सुरक्षाको बारेमा सोच्न, तपाईं कहिले पनि व्याकुल हुन सक्नुहुन्न 😉

केही सामान्य अभ्यास र केही सिफारिस गरिएको छैन, सबै डाटाबेसको लागि उही प्रयोगकर्ता प्रयोग गर्नु हो, रूट प्रयोग गरिएको हो भने खराब हो, जुन यस्तो अविश्वसनीय देखिन्छ जस्तो देखिन्छ, त्यहाँ ती हुन् जसले (अस्पष्टता वा अज्ञानताको कारण) यो गर्नुहोस्, मैले यो पहिले किन भनेका छन किन तपाईले यस्तो व्यवहार गर्नु हुँदैन अर्को पोष्टअब यो वर्णन गर्ने समय छ कि कसरी र किन यो उत्तम छ वेब सर्वर प्रोसेसिंग बिभिन्न प्रयोगकर्ताहरूमा अलग गर्न, यो समय प्रयोग हुनेछ निजिनक्स.

समर्पितसेर्वर_सब छवि

प्रयोगकर्ता र वेब सर्भर को हो?

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

धेरै प्रयोगकर्ताहरूमा छुट्टिनु भनेको के हो?

मानौं कि हाम्रो सर्वरमा हामीसँग २ वेबसाइटहरू छन्, हाम्रो जुन निजी परियोजना हो र अर्को (कल्पना गर्नुहोस् यो हाम्रो प्रेमिका वा भाईको हो)। यद्यपि जब हामी छुट्टै डेटाबेस र बिभिन्न प्रयोगकर्ताहरू तिनीहरूको पहुँचको लागि प्रयोग गर्छौं, अन्तमा दुबै वेबसाइटहरूको फाईलहरू उही प्रयोगकर्ताद्वारा हेरफेर गरिन्छ, PHP प्रोसेसिंग सबै साइटहरूको लागि उही प्रयोगकर्ताद्वारा व्यवस्थित गरिन्छ (यो प्राय: www-डाटा हो)। यो एक सिफारिश नगरिएको अभ्यास हो, सबै कुरा राम्ररी अलग गर्नु राम्रो हुन्छ, पुरानो भनाइको रूपमा, माफ गर्नु भन्दा सुरक्षित हुनु राम्रो हुन्छ।

ठीक छ, मँ बुझ्दछु, म यसलाई Nginx को साथ कसरी गर्छु

२०००px-Nginx_logo.svg

ध्यान दिनुहोस् कि Nginx सँग यसको आफ्नै मोड्युल छैन जुन Apache ले PHP प्रोसेसिंग ह्यान्डल गर्दछ, Nginx को लागी हामीले PHP-CGI वा PHP-FPM प्रयोग गर्नु पर्छ, जुन अपाचे भन्दा राम्रो (वा राम्रो) काम गर्दछ। त्यसैले विभिन्न प्रयोगकर्ताहरू बीच PHP प्रशोधन अलग गर्न, हामीले PHP कन्फिगरेसन फाइलहरू (CGI वा FPM) मा लाइनहरू परिवर्तन गर्नु पर्छ, Nginx आफैंमा।

मानौं तपाईं प्रयोग गर्नुहुन्छ PHP-FPM, हामी कन्फिगरेसन फाइल सिर्जना गर्नेछौं पूल एक विशिष्ट साइटको लागि, त्यो हो, पोखरी PHP-FPM बाट PHP प्रसंस्करण छुट्याउने तरिका हो, तर हामी भागहरूमा जान्छौं।

१. पहिले हामीलाई थाहा हुनुपर्दछ कि हामीले प्रयोग गर्ने प्रणालीको कुन प्रयोगकर्ताले प्रयोग गर्ने छ, म मान्ने छु कि हामीसँग अझै पनि कुनै राम्रो र राम्रोसँग तयार छैन, यसलाई सिर्जना गरौं:

सबै निम्नलिखित आदेशहरू प्रशासनिक विशेषाधिकारहरूको साथ कार्यान्वयन हुनै पर्छ, या त सिधा जड़को साथ वा sudo प्रयोग गरेर

adduser blog

हामी प्रयोगकर्ता सिर्जना गर्ने सामान्य प्रक्रिया सुरू गर्नेछौं, पासवर्ड प्रविष्ट गर्नुहोस्, आदि।

म केवल उदाहरण अनुसरण गर्न प्रयोगकर्तालाई ब्लग गर्दछु, कि हामीले होस्ट गर्ने पहिलो साइट एक ब्लग हुनेछ, राम्रोसँग ... जुन प्रत्येक प्रयोगकर्तालाई कुन साइटसँग सम्बन्धित छ भनेर जान्नको लागि

1. पहिले हामी जानु पर्छ /etc/php5/fpm/pool.d/:

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

2. अब, हामी ब्लग कॉन्फ नामक फाइल सिर्जना गर्नेछौं।

touch blog.conf

3. अब हामी पूलको कन्फिगरेसन राख्दछौं जुन हामी VHost ब्लगको लागि प्रयोग गर्नेछौं।

न्यानोको साथ ब्लाग। कन्फ फाइल सम्पादन गर्नुहोस् ... उदाहरणका लागि: sudo नानो blog.conf
[ब्लग] प्रयोगकर्ता = ब्लग
समूह = ब्लग
सुन्नुहोस् = / var / रन / php5-fpm-ब्लग.sock listen.owner = ब्लग
सुन्नुहोस् समूह = ब्लग
pm = ondemand pm.max_children = ch ch chdir = /

नोट: के म तिनीहरूलाई रातोमा चिन्ह लगाउँदछ जुन उनीहरूले पहिले सिर्जना गरेको प्रयोगकर्तामा निर्भर रहनुपर्दछ। उदाहरण को लागी, यदि उनि अर्को प्रयोगकर्ता संग अर्को VHost सिर्जना गर्दछ (उदाहरण को लागी फोरम) त्यसो भए ब्लगको सट्टा प्रत्येक रेखामा फोरम राख्नुहुन्छ, यो बुझ्दछ?

4. एक पटक नयाँ पूलको कन्फिगरेसन (हामीले भर्खरै सिर्जना गरेको र सम्पादन गरेको ब्लगकन्ट ​​फाइल), यो पालो हो Nginx VHost लाई यो साइटको लागि त्यो VHost को लागी बिभिन्न साock्ग प्रयोग गर्न। प्रयोग गरिने मोजाहरू हामीले पहिले घोषणा गरेको (/var/run/php5-fpm-blog.sock) हुनेछ। Nginx VHost सम्पादन गरौं र PHP प्रोसेसिंग भागमा हामी त्यो मोजा प्रयोग गर्नका लागि सूचित गर्दछौं। उदाहरण को लागी:

स्थान ~ \। php $ {यदि (! -f $ अनुरोध_फाइलनाम) 404 {०XNUMX फिर्ता; }
quickcgi_pass unix: / var / run / php5-fpm-ब्लगमोजा;
fastcgi_params; fastcgi_param SCRIPT_FILENAME $ कागजात_रूट $ फास्टकगी_स्क्रिप्ट_नाम; quickcgi_read_timeout 300; }

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

5. एकचोटि यो काम सकिसकेपछि, हामी दुबै सेवाहरू (php5-fpm र nginx) र voila पुन: शुरू गर्दछौं, हामी देख्नेछौं कि त्यो साइटको प्रक्रिया (vhost) www-डाटा वा रुट वा अन्य कुनैले गरेको छैन, तर प्रयोगकर्ताद्वारा कि हामी पहिले परिभाषित।

यहाँ म तपाईंलाई a को आउटपुट देखाउँछु PS aux | ग्रेप एफपीएम मेरो एक नोड सर्भरमा:

PS aux | ग्रेप एफपीएम ईबुक 586 0.0 ०.० ०.० 0.0 349360 1204 30०००? S Mar0 00:589 php-fpm: पूल ebook 0.0 0.0 349360 1204 30? S Mar0 00:608 php-fpm: पूल ईबुक www 0.0 0.2 350084 5008 30? S Mar0 00:609 php-fpm: पूल www www 0.0 0.2 350600 5048 30 0? S Mar00 3:611 php-fpm: पूल www tv0.0 0.0 349360 1204 30 0? S Mar00 3:3 php-fpm: पूल tv615 tv0.0 0.0 349360 1204 30 0? S Mar00 3:1818 php-fpm: पूल tv1.7 पत्रिका १ ?१1.7 १.437576 १.36396 09 55 0 46?? ?2264? S 1.9:1.7 437332:35884 php-fpm: पूल पत्रिका पत्रिका २२10 १.15 १.0 26 2338२ 4.3 1.0 ?428992?? S १०:१:22196 ०:२ ph php-fpm: पूल पत्रिका विद्यार्थी २ 10. 18. 0. 53 2413२1.8२ २२१ 1.7?? S 437764:36152 10:22 php-fpm: पूल पुतली पत्रिका २0१18 १.2754 १.3.5 1.3 356724 27164 10 ?१२? S 38:0 00:5624 php-fpm: पूल गटल पत्रिका २0.0 1.0.. 365168. १.? 22696२ 28११0?? S 16:7900 0.3:2.5 php-fpm: पूल गटल cgr 457052 52444२25 20 ०.० 23 11021१0.4 2.5 २२458316 52864? एस अप्रिल ०:28:१ ph php-fpm: पूल cgr pupil 5 57०० ०. 11254 २. 0.0 1.0०363152२ 21708२28? एस अप्रिल २०:२:0 php-fpm: पूल पुतली विद्यार्थी ११०२१ ०. 12 २. 13184 0.0१? 1.0२362872?? एस अप्रिल 21360::28 php-fpm: पोखरी विद्यार्थी cgr ११२0 ०.० 08. XNUMX XNUMX१XNUMX२ २१XNUMX०XNUMX? एस अप्रिल ०२:१२ php-fpm: पूल cgr cgr १XNUMX१XNUMX ०.० XNUMX२ २१XNUMX०? एस अप्रिल ००:०XNUMX php-fpm: पूल cgr

तपाईले देख्न सक्नुहुनेछ ... Nginx + PHP-FPM प्रयोग गरेर प्रयोगकर्ता द्वारा PHP प्रसंस्करण अलग गर्नु साँच्चिकै सजिलो छ, त्यहाँ तपाईले त्यहाँ देख्न सक्नुहुन्छ कि त्यहाँ धेरै পুলहरू छन्, त्यहाँ त्यहाँ धेरै प्रयोगकर्ताहरू छन्।

CONCLUSIONS

जब सर्वरहरूको कुरा आउँदछ, तपाईं कहिले पनि व्याकुल हुनुहुन्न ... सुरक्षा भनेको कुनै चीज हुँदैन, हामी सधैं हाम्रो सर्भर र उनीहरूको सेवाहरूको सुरक्षा सुधार गर्ने प्रयास गर्छौं, हामी सफल (सफल) बाट डराउँदछौं। ह्याक प्रयास वा केहि समान 😉


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

२ टिप्पणीहरू, तपाइँको छोड्नुहोस्

तपाइँको टिप्पणी छोड्नुहोस्

तपाईंको ईमेल ठेगाना प्रकाशित हुनेछैन।

*

*

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

  1.   धुन्टर भन्यो

    गारा, हालको समयमा यी चीजहरू सकेसम्म स्वचालित हुनुपर्दछ, म तपाईंलाई सिफारिश गर्दछु उत्तर दिनुहोस्। एजेन्ट बिना, तपाईलाई टाढाको होस्टमा अजगर मात्र चाहिन्छ, कन्फिगर गर्नका लागि एकदम साधारण, यामल फाईलहरू, जिन्जा टेम्प्लेटहरू।

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

    1.    KZKG ^ Gaara भन्यो

      हेरौं, यो सँधै वर्डप्रेस साइटहरूका लागि मात्र होईन, र ... हाह सम्भव उत्तरदायी क्लिकहरू भोलाओ, तर म सर्भरमा कसरी काम गर्दछ भनेर ठ्याक्कै जान्न चाहान्छु, यदि मैले नयाँ मोजाहरू र १ मिनेट बनाउन पनि खर्च गरें भने पनि। नयाँ VHost 😀

      1.    धुन्टर भन्यो

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

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

      2.    धुन्टर भन्यो

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

        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.    धुन्टर भन्यो

      मानसिकता थोरै परिवर्तन हुन्छ, nginx स्थिर सामग्री सेवा गर्दछ र php-fpm को लागि एक रिभर्स प्रोक्सीको रूपमा कार्य गर्दछ जो वास्तविक PHP चलाउँछ, तपाईंले भागहरूमा सुरू गर्नुपर्नेछ र चरणबद्ध रूपमा कदम बढाउनु पर्छ, परिमार्जन गर्न गाईड खोज्नु पर्छ। तपाईसँग काम गर्ने फ्रेमवर्क, प्रत्येकको सार्वजनिक, स्थिर, स्रोत, इत्यादि ... को नामबाट यसको विस्तृत विवरण हुन्छ।

  4.   अज्ञात भन्यो

    समुदायलाई "होस्टियर" शब्द छोड्नको ठूलो पक्ष दिनुहोस्, जुन अवस्थित छैन। भगवानद्वारा, के "यजमान" भन्न यति गाह्रो छ?

  5.   विल भन्यो

    अभिवादन, तपाईको उदाहरण पछ्याई म यो जान्न चाहन्छु कि पूल केवल वर्डप्रेस ब्याकनको लागि मात्र बनाउन सकिन्छ, त्यो हो, wp- व्यवस्थापकले ब्याकइन्डमा आगमन जडानहरूको लागि नयाँ सकेट बनाउने।

    स्थान / wp-प्रशासन {
    मूल /var/www/yoursite.com/wp-admin;
    अनुक्रमणिका index.php index.html index.htm;
    स्थान ~ ^ / wp-admin /(.+। php) $ {
    try_files $ uri = 404;
    मूल /var/www/yoursite.com/wp-admin;
    समावेश / आदि / nginx / quickcgi_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/;
    }
    }