استضف مضيفات VHosts متعددة مع مستخدمين مختلفين في Nginx

الشيء الأكثر طبيعية في العالم عندما يكون لديك خادم ، هو التفكير في الأمان والمزيد من الأمان ، لا يمكنك أبدًا أن تصاب بجنون العظمة بما فيه الكفاية

هناك ممارسة شائعة إلى حد ما ولا يوصى بأي شيء ، وهي استخدام نفس المستخدم لجميع قواعد البيانات ، والأسوأ من ذلك إذا تم استخدام الجذر ، وهو أمر لا يصدق كما قد يبدو ، فهناك من (بسبب التشرد أو الجهل) افعل هذا ، لقد تحدثت بالفعل عن سبب عدم التصرف بهذا الشكل آخر للأطفالحان الوقت الآن لشرح كيف ولماذا من الأفضل فصل معالجة خادم الويب في مستخدمين مختلفين ، هذه المرة سيستخدم إنجن إكس.

DedicatedServer_SubImage

ما هو ذلك للمستخدمين وخادم الويب؟

لشرح ذلك بطريقة مختصرة وبسيطة ، يحتاج خادم الويب (apache ، nginx ، أيًا كان) إلى فتح العمليات في النظام ، والعمليات التي ستكون هي التي تأخذ الملفات من محرك الأقراص الثابتة (الصور ، وما إلى ذلك) وتصنعها متاح لمتصفح العميل. لا يمكن لخادم الويب ببساطة أخذ الملفات والتلاعب بها لكونه لا أحد ، أي أنه يحتاج إلى مستخدم سيكون هو الشخص الذي سيفعل كل هذا في النهاية ، وهذا المستخدم هو الشخص الذي أتحدث عنه ، هل تفهم؟

ما هو الفصل في عدة مستخدمين؟

لنفترض أن لدينا على خادمنا موقعان على الويب ، فموقعنا مشروع شخصي والآخر (دعونا نتخيل أنها صديقتنا أو أخونا). حتى عندما نستخدم قواعد بيانات منفصلة ومستخدمين مختلفين للوصول إليها ، في النهاية يتم التلاعب بملفات كلا الموقعين بواسطة نفس المستخدم ، تتم إدارة معالجة PHP بواسطة نفس المستخدم لجميع المواقع (عادة www-data). هذه ممارسة غير موصى بها ، فمن الأفضل فصل كل شيء جيدًا ، كما يقول المثل القديم ، من الأفضل أن تكون آمنًا على أن تكون آسف.

حسنًا ، أفهم كيف أفعل ذلك مع Nginx

2000px-Nginx_logo.svg

أول شيء يجب ملاحظته هو أن Nginx ليس لديه وحدة خاصة به تتعامل مع معالجة PHP كما تفعل Apache ، بالنسبة لـ Nginx نحتاج إلى استخدام PHP-CGI أو PHP-FPM ، والتي تعمل بشكل جيد (أو أفضل) من Apache. لذلك لفصل معالجة PHP عبر مستخدمين مختلفين ، سنحتاج إلى تغيير الأسطر في ملفات تكوين PHP (CGI أو FPM) ، وليس Nginx نفسه.

افترض أنك تستخدم PHP-FPM، سننشئ ملف تكوين لـ تجمع بالنسبة لموقع معين ، فإن التجمع هو طريقة لفصل معالجة PHP عن PHP-FPM ، لكننا ننتقل إلى أجزاء.

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 باستخدام nano ... على سبيل المثال: sudo نانو blog.conf
[المدونة] المستخدم = المدونة
المجموعة = المدونة
استمع = / var / run / php5-fpm-المدونة.sock listen.owner = المدونة
Listen.group = المدونة
pm = ondemand pm.max_children = 96 chdir = /

ملاحظة: ما أضعه باللون الأحمر هو ما يجب عليهم تعديله اعتمادًا على المستخدم الذي أنشأوه مسبقًا. على سبيل المثال ، إذا قاموا بإنشاء مضيف VHost آخر مع مستخدم آخر (منتدى على سبيل المثال) ثم بدلا من بلوق ببساطة وضع المنتدى في كل سطر ، لا يفهم؟

4. بمجرد تكوين التجمع الجديد (ملف blog.conf الذي أنشأناه وحررناه للتو) ، حان الوقت لإخبار Nginx VHost باستخدام جورب مختلف لهذا المضيف ، لهذا الموقع. سيكون الجورب الذي سيتم استخدامه هو الذي أعلناه سابقًا (/var/run/php5-fpm-blog.sock). دعنا نعدل Nginx VHost وفي جزء معالجة PHP ، نشير إلى استخدام تلك الجوارب. فمثلا:

location ~ \ .php $ {if (! -f $ request_filename) {return 404؛ }
fastcgi_pass unix: / var / run / php5-fpm-المدونة.جورب؛
تشمل fastcgi_params ؛ fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name؛ fastcgi_read_timeout 300 ؛ }

كما ترى ، أشير إلى أن معالجة PHP لمضيف VHost (هذه السطور هي على سبيل المثال داخل / etc / nginx / sites-enabled / vhost-blog) افعل ذلك مع الجوارب الموجودة في /var/run/php5-fpm-blog.sock ... وهو الذي أنشأناه سابقًا عند تحرير /etc/php5/fpm/pool.d/blog.conf ... هو لا يفهم؟

5. بمجرد الانتهاء من ذلك ، نعيد تشغيل كلتا الخدمتين (php5-fpm و nginx) و voila ، سنرى أن معالجة هذا الموقع (vhost) لا تتم بواسطة www-data أو root أو أي شخص مشابه ، ولكن من قبل المستخدم محددة مسبقا.

هنا أريكم إخراج ملف ps aux | grep fpm على أحد خوادم عقدي:

ps aux | grep fpm ebook 586 0.0 0.0 349360 1204؟ S Mar30 0:00 php-fpm: pool ebook 589 0.0 0.0 349360 1204؟ S Mar30 0:00 php-fpm: pool ebook www 608 0.0 0.2 350084 5008؟ S مارس 30 0:00 php-fpm: pool www 609 0.0 0.2 350600 5048؟ S Mar30 0:00 php-fpm: pool www tv3 611 0.0 0.0 349360؟ S Mar1204 30:0 php-fpm: pool tv00 tv3 3 615 0.0 0.0؟ S مارس 349360 1204:30 php-fpm: pool tv0 magazine 00 3 1818 1.7 1.7؟ S 437576:36396 09:55 php-fpm: مجلة البلياردو 0 46 2264 1.9 1.7؟ S 437332:35884 10:15 php-fpm: تلميذ مجلة البلياردو 0 26 2338 4.3 1.0؟ S 428992:22196 10:18 php-fpm: مجلة التلاميذ 0 53 2413 1.8 1.7؟ S 437764:36152 10:22 php-fpm: pool gutl magazine 0 18 2754 3.5 1.3؟ S 356724:27164 10:38 php-fpm: pool gutl cgr 0 00 5624 0.0 1.0؟ S 365168 أبريل 22696:28 php-fpm: pool cgr تلميذ 0 16 7900 0.3 2.5؟ S 457052 أبريل 52444:25 php-fpm: تلميذ حمام السباحة 20 23 11021 0.4 2.5؟ S 458316 أبريل 52864:28 php-fpm: تلميذ البلياردو cgr 5 57 11254 0.0 1.0؟ S 363152 أبريل 21708:28 php-fpm: pool cgr cgr 0 12 13184 0.0 1.0؟ S 362872 أبريل 21360:28 php-fpm: pool cgr

كما ترى ... يعد فصل معالجة PHP بواسطة المستخدمين باستخدام Nginx + PHP-FPM أمرًا سهلاً حقًا ، حيث ترى أن هناك العديد من المجمعات ، حيث يوجد العديد من المستخدمين.

استنتاجات

عندما يتعلق الأمر بالخوادم ، فأنت لا تشعر بجنون العظمة مطلقًا ... فالأمان ليس شيئًا للعب به ، فكلما حاولنا دائمًا تحسين أمان خوادمنا وخدماتها ، قل احتمال خوفنا من (ناجح) محاولة الاختراق أو أي شيء مشابه 😉


محتوى المقال يلتزم بمبادئنا أخلاقيات التحرير. للإبلاغ عن خطأ انقر فوق هنا.

9 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   صائد قال

    Gaara ، في الأوقات الحالية ، يجب أتمتة هذه الأشياء قدر الإمكان ، أوصيك بتجربة Ansible. بدون وكيل ، فأنت تحتاج فقط إلى python على المضيف البعيد ، وهو سهل التكوين للغاية ، وملفات yaml ، وقوالب Jinja.

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

    1.    KZKG ^ جارا قال

      دعونا نرى ، هذا ليس دائمًا لمواقع WordPress ، و ... هاها ربما أنسبل نقرات volao ، لكنني أفضل أن أعرف بالضبط كيف يعمل كل شيء على الخادم ، حتى لو كان عليّ قضاء دقيقة واحدة في إنشاء جوارب جديدة و مضيف V جديد 😀

      1.    صائد قال

        مع Ansible ، يمكنك أتمتة كل شيء ، فأنت تفعل عمليًا ما تريده ، وتتمثل ميزة هذه الطريقة في أنك تلخص الممارسة ثم تنفذها حسب الرغبة ، وتخيل أن لديك موقعًا محملاً بكثافة وتريد القيام بموازنة التحميل بين خوادم التطبيق ، هذه يجب أن يتم تهيئتها بنفس الطريقة تمامًا ، فلا يمكنك تخطي خطوة أو القيام بأي شيء مختلف في إحداها ، هل يمكنك تخيل القيام بالإجراء خطوة بخطوة 4 مرات؟ مع 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.   روتس 87 قال

    أنا (أو أدرس لأكون) مطورًا ولدي NGIX الكثير من المشكلات عند تكوين nginx + php-fpm. أعلم أن توزيعة archlinux ليست هي الأفضل لجعلها خادمًا ، ولكن في كل مرة أقوم بتحديث إصدار من ngix أو php ، يتعطل كل شيء دائمًا ، لذا تخليت عن محاولة lol ... واليوم أبقى مع Apache الكلاسيكي + PHP لكنني سأرى ما إذا كنت سأذهب حول NGIX مرة أخرى ... ربما في جهاز افتراضي

    1.    صائد قال

      تتغير العقلية قليلاً ، يخدم nginx المحتوى الثابت ويعمل كوكيل عكسي لـ php-fpm الذي يدير PHP الحقيقي ، عليك أن تبدأ في أجزاء وتحقق النشر خطوة بخطوة ، ابحث عن دليل للنشر الإطار الذي تعمل به ، كل واحد لديه تفاصيله من خلال أسماء الجمهور ، ثابت ، موارد ، إلخ ...

  4.   مجهول قال

    هل للمجتمع مصلحة كبيرة في التخلي عن كلمة "مضيف" ، التي لا وجود لها. والله هل يصعب قول "مضيف"؟

  5.   يريد ل قال

    تحياتي ، باتباع مثالك ، أود معرفة ما إذا كان يمكن إنشاء تجمع لـ wordpress backen ، أي لـ wp-admin من خلال إنشاء مقبس جديد للاتصالات الواردة إلى الواجهة الخلفية

    الموقع / wp-admin {
    الجذر /var/www/yoursite.com/wp-admin ؛
    index index.php index.html index.htm؛
    الموقع ~ ^ / wp-admin /(.+. php) $ {
    try_files $ uri = 404؛
    الجذر /var/www/yoursite.com/wp-admin ؛
    include / 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/;
    }
    }