أوامر Nginx التي يجب أن تعرفها. استكشاف أخطاء تثبيت Nginx وتكوين ملف تكوين Nginx وإصلاحها

ص دليل المبتدئين

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

يحتوي Nginx على عمليات عاملة رئيسية واحدة وعدة عمليات عاملة. تتمثل المهمة الرئيسية للعملية الرئيسية في قراءة التكوين والتحقق من صحته وإدارة عمليات العمال. تؤدي عمليات العامل المعالجة الفعلية للطلبات. يستخدم nginx نموذجًا قائمًا على الحدث ويعتمد على نظام التشغيلآليات التوزيع الفعال للطلبات بين عمليات العاملين. يتم تحديد عدد العمليات العاملة في ملف التكوين ويمكن إصلاحه لتكوين معين أو تعيينه تلقائيًا على قدم المساواة مع عدد نوى المعالج المتاحة (انظر القسم 3.3.1).عمليات_العمال).

يتم تحديد كيفية عمل nginx ووحداته النمطية في ملف التكوين. بشكل افتراضي ، يتم تسمية ملف التكوين nginx.conf ويقع في الكتالوج/ usr / local / nginx / conf أو / etc / nginx أو / usr / local / etc / nginx

لتشغيل nginx ، تحتاج إلى تنفيذ الملف التنفيذي. بمجرد تشغيل nginx ، يمكن التحكم فيه عن طريق استدعاء الملف القابل للتنفيذ بالمعامل-س . استخدم الصيغة التالية:

إشارة nginx

أين الإشارة يمكن أن يكون واحدًا مما يلي:

  • توقف - إنهاء سريع
  • - إعادة فتح ملفات السجل

على سبيل المثال ، لإيقاف عمليات nginx أثناء انتظار انتهاء العمليات العاملة من معالجة الطلبات الحالية ، يمكنك تشغيل الأمر التالي:

nginx-s إنهاء

يجب تشغيل الأمر تحت نفس المستخدم الذي تم تشغيل nginx تحته.

لن يتم تطبيق التغييرات التي تم إجراؤها على ملف التكوين حتى يتم إرسال أمر تهيئة إعادة التحميل يدويًا إلى nginx أو إعادة تشغيله. لإعادة تحميل تشغيل التكوين:

إعادة تحميل nginx -s

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

يمكنك أيضًا إرسال إشارات إلى عمليات nginx باستخدام أدوات Unix ، مثل الأداة المساعدةقتل . في هذه الحالة ، يتم إرسال الإشارة مباشرة إلى العملية باستخدام المعرف المحدد. يتم كتابة معرف العملية الرئيسية nginx إلى الملف بشكل افتراضي nginx.pid في / usr / local / nginx / logs أو / var / run . على سبيل المثال ، إذا كان معرّف العملية الرئيسي هو 1628 ، لإرسال إشارة QUIT التي ستنهي nginx بأمان ، يمكنك تشغيل:

1628 مشروع زراعة الاسكندنافية 1628

يمكن استخدام الأداة لسرد جميع عمليات nginx قيد التشغيلملاحظة ، على سبيل المثال ، على النحو التالي:

ps-ax | grep nginx

يمكن العثور على مزيد من المعلومات حول إرسال الإشارات إلى عمليات nginx فيإدارة nginx.

هيكل ملف التكوين

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

تعتبر التوجيهات الموضوعة في ملف التكوين خارج أي سياق في السياقرئيسي. الأحداث وتوجيهات http وضعها في السياقالرئيسي ، الخادم في http ، والموقع في الخادم.

جزء من سلسلة بعد حرف# يعتبر تعليق.

تقديم محتوى ثابت

تتمثل إحدى المهام المهمة لتهيئة nginx في تقديم ملفات مثل الصور أو صفحات HTML الثابتة. لنأخذ مثالاً يتم فيه ، بناءً على الطلب ، توزيع الملفات من أدلة محلية مختلفة:/ data / www التي تحتوي على ملفات HTML و/ بيانات / صور يحتوي على ملفات الصور. للقيام بذلك ، تحتاج إلى تحرير ملف التكوين وتكوين الكتلةالخادم داخل كتلة http مع كتلتين للموقع.

أولاً ، قم بإنشاء دليل/ data / www ووضع الملف فيه index.html مع أي محتوى نصي ، وكذلك إنشاء دليل/ بيانات / صور ووضع بعض ملفات الصور فيه.

بعد ذلك ، افتح ملف التكوين. يتضمن ملف التكوين الافتراضي بالفعل بعض أمثلة الحظرالخادم ، علق في الغالب. بالنسبة لمهمتنا الحالية ، من الأفضل التعليق على كل هذه الكتل وإضافة كتلة جديدةالخادم :

http (

الخادم(

بشكل عام ، قد يحتوي ملف التكوين على عدة كتلالخادم المميز حسب المنافذ التي عليهااستمع واسم الخادم . من خلال تحديد أيالخادم سيعالج الطلب ، يقارن nginx URI المحدد في رأس الطلب بمعلمات التوجيهاتموقع ، المحددة داخل الكتلةالخادم.

أضف كتلة موقع إلى كتلة الخادم النموذج التالي:

موقع / (

الجذر / البيانات / شبكة الاتصالات العالمية ؛

تحدد كتلة الموقع هذه "/ "كبادئة تتم مقارنتها بـ URI من الطلب. لطلبات المطابقة ، عن طريق إضافة URI إلى المسار المحدد في التوجيهجذر ، وهذا هو ، في هذه الحالة ، إلى/ data / www ، المسار إلى الملف المطلوب في النطاق المحلي نظام الملفات. إذا كان هناك تطابق مع كتل متعددةموقع ، يحدد nginx الكتلة ذات البادئة الأطول. في الكتلةموقع أعلاه هو أقصر بادئة ، وطول واحد ، وبالتالي لن يتم استخدام هذه الكتلة إلا إذا لم يكن هناك تطابق مع أي من الكتل الأخرىموقع.

الموقع / الصور / (

الجذر / البيانات ؛

سوف تتطابق مع الاستعلامات التي تبدأ بـ/ الصور / (الموقع / مناسب أيضًا لهم ، ولكن البادئة المشار إليها أقصر).

التكوين النهائي للكتلةالخادم يجب أن يبدو مثل هذا:

الخادم(

موقع / (

الجذر / البيانات / شبكة الاتصالات العالمية ؛

الموقع / الصور / (

الجذر / البيانات ؛

هذا تكوين خادم قيد التشغيل يستمع إلى المنفذ القياسي 80 ومتوفر على الكمبيوتر المحليبالعنوان http: // localhost / . استجابة للطلبات التي تبدأ عناوين URL الخاصة بها/ صور / ، سيرسل الخادم الملفات من الدليل/ بيانات / صور . على سبيل المثال ، لطلبhttp: //localhost/images/example.pngسيرسل nginx ملفًا ردًا على ذلك/data/images/example.png . إذا لم يكن هذا الملف موجودًا ، فسيرسل nginx ردًا يشير إلى خطأ 404. الطلبات التي لا تبدأ معرّفات URI الخاصة بها/ صور / ، سيتم تعيينها إلى الدليل/ data / www . على سبيل المثال ، كنتيجة لاستعلامhttp: //localhost/some/example.htmlسيتم إرسال ملف ردا على ذلك/data/www/some/example.html.

للتقديم التكوين الجديد، ابدأ nginx إذا لم يكن قيد التشغيل بالفعل ، أو أرسل إشارةإعادة تحميل لعملية nginx الرئيسية عن طريق تشغيل:

إعادة تحميل nginx -s

في حالة عدم عمل شيء ما كما هو متوقع ، يمكنك محاولة معرفة سبب استخدام الملفات access.log و error.log من / usr / local / nginx / logs أو / var / log / nginx directory.

إعداد خادم وكيل بسيط

أحد الاستخدامات الشائعة لـ nginx هو استخدامه كخادم وكيل ، أي الخادم الذي يقبل الطلبات ، ويعيد توجيهها إلى الخوادم الوكيلة ، ويستقبل الردود منها ، ويرسلها إلى العميل.

سنقوم بإعداد خادم وكيل أساسي يخدم طلبات الصور من الدليل المحلي ويعيد توجيه جميع الطلبات الأخرى إلى الخادم الوكيل. في هذا المثال ، سيتم تشغيل كلا الخادمين تحت نفس مثيل nginx.

أولاً ، قم بإنشاء خادم upstream بإضافة كتلة أخرىالخادم إلى ملف التكوين nginx بالمحتوى التالي:

الخادم(

استمع 8080 ؛

الجذر / البيانات / up1 ؛

موقع / (

سيكون هذا خادمًا بسيطًا يستمع على المنفذ 8080 (سابقًايستمع لم يتم تحديده نظرًا لاستخدام المنفذ القياسي 80) ويعرض جميع الطلبات الخاصة بالدليل/ بيانات / up1 على نظام الملفات المحلي. قم بإنشاء هذا الدليل ووضع الملف فيه index.html . لاحظ أن التوجيهجذر وضعها في السياقالخادم . مثل هذا التوجيهجذر سوف تستخدم عندما التوجيهموقع لا يحتوي المحدد لتنفيذ الطلب على توجيه خاص بهجذر.

بعد ذلك ، استخدم تكوين الخادم من القسم السابق وقم بتعديله ليصبح تكوين خادم وكيل. إلى أول كتلةموقع أضف توجيهًا proxy_pass ، تحديد بروتوكول واسم ومنفذ الخادم الوكيل كمعامل (في حالتنا ، هذا http: // localhost: 8080):

الخادم(

موقع / (

Proxy_pass http: // localhost: 8080 ؛

الموقع / الصور / (

الجذر / البيانات ؛

سنقوم بتغيير الكتلة الثانيةموقع ، وهو على هذه اللحظةيعرض الطلبات ببادئة/ صور / على ملفات من دليل/ بيانات / صور بحيث يكون مناسبًا لطلبات الصور ذات الامتدادات النموذجية للملفات. كتلة متغيرةموقع على النحو التالي:

الجذر / البيانات / الصور ؛

الوسيطة عبارة عن تعبير عادي يطابق جميع URIs المنتهية بـ.gif أو .jpg أو .png . يجب أن يسبق التعبير العادي بحرف~ . سيتم تعيين الطلبات ذات الصلة إلى الدليل/ بيانات / صور.

عندما يختار nginx كتلةموقع ، والذي سيخدم الطلب ، ثم يتحقق أولاً من التوجيهاتموقع ، تحديد البادئات ، التذكرموقع بأطول بادئة مطابقة ، ثم يتحقق من وجود تعبيرات عادية. إذا كان هناك تطابق للتعبير العادي ، يختار nginx التعبير المناسبموقع ، وإلا فإن المحفوظة مسبقًاموقع.

يبدو تكوين الخادم الوكيل الناتج كما يلي:

الخادم(

موقع / (

Proxy_pass http: // localhost: 8080 / ؛

الموقع ~ \. (gif | jpg | png) $ (

الجذر / البيانات / الصور ؛

سيقوم هذا الخادم بتصفية الطلبات التي تنتهي بـ.gif أو .jpg أو .png وعرضها في الدليل/ بيانات / صور (عن طريق إضافة URI إلى معلمة التوجيهجذر ) وإعادة توجيه جميع الطلبات الأخرى إلى الخادم الرئيسي الذي تم تكوينه أعلاه.

لتطبيق التكوين الجديد ، أرسل إشارةإعادة تحميل nginx كما هو موضح في الأقسام السابقة.

هناك العديد من توجيهات أخرى لتهيئة اتصال الوكيل بشكل أكبر.

تكوين FastCGI Proxying

يمكن استخدام nginx لإعادة توجيه الطلبات إلى خوادم FastCGI. يمكنهم تشغيل التطبيقات التي تم إنشاؤها باستخدام مجموعة متنوعة من الأطر ولغات البرمجة ، مثل PHP.

يتضمن تكوين nginx الأساسي للعمل مع خادم FastCGI الوكيل استخدام التوجيه fastcgi_pass بدلا من التوجيهتوجيهات proxy_pass و fastcgi_param لتكوين المعلمات التي تم تمريرها إلى خادم FastCGI. تخيل أن خادم FastCGI متاح علىالمضيف المحلي: 9000 . بناءً على تكوين الخادم الوكيل من القسم السابق ، استبدل التوجيه proxy_pass لتوجيه fastcgi_pass وتغيير الإعداد إلىالمضيف المحلي: 9000. في PHP ، المعلمة SCRIPT_FILENAME يستخدم لتعريف اسم البرنامج النصي ، وفي المعلمة QUERY_STRING تم تمرير معلمات الطلب. سوف تحصل على التكوين التالي:

الخادم(

موقع / (

fastcgi_pass المضيف المحلي: 9000 ؛

Fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name؛

Fastcgi_param QUERY_STRING $ query_string؛

الموقع ~ \. (gif | jpg | png) $ (

الجذر / البيانات / الصور ؛

سيؤدي هذا إلى إعداد خادم سيعيد توجيه جميع الطلبات ، باستثناء طلبات الصور الثابتة ، إلى خادم وكيل يعمل علىالمضيف المحلي: 9000 باستخدام بروتوكول FastCGI.

أحد أكثر خوادم الويب شيوعًا

يحظى Nginx بشعبية كبيرة بين مستخدمي الويب والخوادم الوكيلة نظرًا لأدائه. يتمتع الخادم بالعديد من المزايا ، لكن إعداده سيكون صعبًا على المبتدئين. نريد مساعدتك في فهم ملفات التكوين ، وبناء الجملة ، وإعداد المعلمات الأساسية لـ Nginx.

التسلسل الهرمي للدليل

توجد جميع ملفات تهيئة الخادم في الدليل / etc / nginx. بالإضافة إلى ذلك ، توجد عدة مجلدات أخرى داخل الدليل ، بالإضافة إلى ملفات التكوين المعيارية.

cd / etc / nginx
ls -F
conf.d / koi-win naxsi.rules scgi_params uwsgi_params
fastcgi_params mime.types nginx.conf sites-available / win-utf
koi-utf naxsi_core.rules تمكين المواقع proxy_params /

إذا كنت قد استخدمت Apache ، فيجب أن تكون على دراية بالأدلة التي تدعم المواقع والمواقع المتاحة. يحددون تكوين المواقع. يتم تخزين الملفات التي تم إنشاؤها في الدليل الأخير. مطلوب مجلد المواقع الممكّنة لتخزين التكوينات للصفحات الممكّنة فقط. لربطها ، تحتاج إلى ارتباط رمزي بين المجلدات. يمكن أيضًا تخزين التكوينات في دليل conf.d. في نفس الوقت ، أثناء بدء تشغيل Nginx ، سيتم قراءة كل ملف بامتداد .conf في ملف جديد. عند كتابة ملفات التكوين ، اكتب رمزًا بدون أخطاء واتبع البنية. توجد جميع الملفات الأخرى في / etc / nginx. يحتوي المُكوِّن على معلومات حول عمليات محددة ، بالإضافة إلى مكونات إضافية.

ملف التكوين الرئيسي لـ Nginx هو nginx.conf.

يقرأ جميع ملفات التكوين ، ويجمعها في ملف مطلوب عند بدء تشغيل الخادم. افتح الملف باستخدام:

sudo nano /etc/nginx/nginx.conf

ستظهر على الشاشة الأسطر التالية:

بيانات المستخدم على شبكة الاتصالات العالمية ؛
عمليات العمال 4 ؛
pid /var/run/nginx.pid ؛
أحداث (
اتصالات العمال 768 ؛
# متعدد_قبول في ؛
}
http (
. . .

اول واحد هو معلومات عامةحول Nginx. تحدد عبارة المستخدم www-data المستخدم الذي يدير الخادم. يوضح التوجيه pid مكان عمليات PID المخصصة للاستخدام الداخلي. يعرض سطر worker_processes عدد العمليات التي يمكن لـ Nginx تشغيلها في نفس الوقت. بالإضافة إلى ذلك ، يمكن تحديد السجلات هنا (على سبيل المثال ، يتم تحديد سجل الأخطاء من خلال توجيه error_log). أدناه هو قسم الأحداث. هناك حاجة للتعامل مع اتصالات الخادم. بعد ذلك يتم حظر HTTP.

هيكل ملف تكوين Nginx

سيساعدك فهم بنية تنسيق الملف على فهم تكوين خادم الويب بشكل أفضل. وهي مقسمة إلى اللبنات. يتم وضع تفاصيل تكوين كتلة http بواسطة الكتل الخاصة. يرثون ممتلكات من الوالد ، أي الذي يوجدون فيه. تخزن هذه الكتلة معظم تكوينات الخادم. وهي مقسمة إلى كتل الخادم ، والتي تقع ضمنها المواقع.

عندما تقوم بتكوين خادم Nginx ، ضع في اعتبارك أنه كلما انخفض حجم كتلة التكوين ، قل عدد العناصر التي ترث الخصائص والعكس صحيح. يحتوي الملف على عدد كبير من الخيارات التي تغير عمل الخادم. يمكنك ضبط ضغط الملفات المرسلة للعميل ، على سبيل المثال. للقيام بذلك ، أدخل المعلمات:

تشغيل gzip ؛
gzip_disable "msie6" ؛

ضع في اعتبارك أن نفس المعلمة يمكن أن يكون لها قيم مختلفة في كتل مختلفة. أولاً ، قم بتعيينه في الأعلى ، ثم تجاوز المعلمة عند المستوى المطلوب. لو أخر فعللم يتم تنفيذه ، سيقوم البرنامج بتعيين القيم تلقائيًا.

الأسطر الأخيرة من ملف nginx.conf هي:

تشمل /etc/nginx/conf.d/*.conf ؛
تضمين / etc / nginx / sites-enabled / * ؛

تشير إلى أنه يتم تخزين كتل الموقع والخادم خارج هذا الملف. يحددون إعدادات عناوين url وملفات محددة. مثل هذا الهيكل ضروري للحفاظ على هيكل التكوين المعياري. بداخله ، سيكون من الممكن إنشاء أدلة وملفات لمواقع مختلفة. بالإضافة إلى ذلك ، يمكنك تجميع ملفات متشابهة. بعد الدراسة ، يمكنك إغلاق ملف nginx.conf.

الكتل الافتراضية

إنها مماثلة للمضيفات الافتراضية في Apache. تتضمن كتل قسم الخادم خصائص المواقع الفردية الموجودة على الخادم. في مجلد المواقع المتاحة ، ستجد ملف حظر الخادم ، وهو الملف الافتراضي. بداخله ، يمكنك معرفة البيانات الضرورية التي قد تكون مطلوبة عند صيانة المواقع.

مواقع الأقراص المدمجة المتاحة
sudo نانو الافتراضي
الخادم(
root / usr / share / nginx / www ؛
index.html index.htm ؛
server_namelocalhost؛
موقع / (
try_files $ uri $ uri / /index.html؛
}
الموقع / المستند / (
الاسم المستعار / usr / share / doc / ؛
تشغيل الفهرس التلقائي ؛
يسمح 127.0.0.1 ؛
نفي جميع؛
}
}

في المثال أعلاه ، تمت إزالة التعليقات عمدًا. تم ذلك لتسهيل الإدراك. داخل كتل الخادم توجد إعدادات محاطة بأقواس معقوفة:

يتم وضع هذه الكتلة باستخدام التوجيه include في نهاية http المحدد في ملف nginx.conf. يحدد التوجيه الجذر الدليل حيث سيتم تحديد موقع محتوى الموقع. في ذلك ، سيبحث البرنامج عن الملفات التي سيطلبها المستخدم. المسار الافتراضي هو / usr / share / nginx / www. يفصل Nginx الأسطر أو التوجيهات عن بعضها بفاصلة منقوطة. إذا لم يتم وضع علامة الترقيم ، تتم قراءة عدة أسطر على أنها سطر واحد. لكتابة القواعد التي سيتم استخدامها كفهرس ، استخدم توجيه الفهرس. سيقوم الخادم بالتحقق منها بالترتيب المذكور. إذا لم يطلب المستخدم أيًا من الصفحات المتاحة ، فسيتم إرجاع index.html. إذا لم يكن موجودًا ، فسيقوم الخادم بالبحث عن index.htm.

قاعدة اسم الخادم

يتضمن قائمة بأسماء المجال التي سيحتاج كتلة الخادم إلى معالجتها. يمكنك إدخال أي عدد منهم ، مفصولة بمسافات. إذا وضعت * في نهاية أو بداية المجال ، يمكنك تحديد اسم بقناع. تتطابق العلامة النجمية مع جزء من الاسم. إذا كتبت * .com.ua ، فستجد أن جميع عناوين منطقة المجال. إذا كان العنوان يتناسب مع وصف العديد من التوجيهات ، فسيستجيب للتوجيهات التي تناسبه تمامًا. إذا لم تكن هناك مطابقات ، فستكون الإجابة على الاسم الأطول الذي يحتوي على قناع. خلاف ذلك ، سيتم تنفيذ مطابقة التعبير العادي. تبدأ أسماء الخوادم التي تستخدم التعبيرات العادية بالتلدة (~).

كتل الموقع

التالي في السطر سيكون لدينا كتلة موقع. من الضروري تحديد كيفية معالجة طلبات معينة. إذا لم تتطابق الموارد مع أي كتل مواقع أخرى ، فسيتم تطبيق التعليمات الموجودة بين قوسين عليها. قد تتضمن هذه الكتل مسارًا مثل / doc /. لإنشاء تطابق كامل بين uri والموقع ، يتم استخدام علامة =. باستخدام التلدة ، يمكنك مطابقة التعبيرات العادية. يمكنك أيضًا ضبط حساسية حالة الأحرف عن طريق وضع ~. إذا أضفت علامة النجمة ، فلن تلعب الحالة أي دور.

ضع في اعتبارك: عندما يتطابق الطلب تمامًا مع حظر الموقع ، فسيتم استخدامه وسيتوقف البحث. عندما تكون المطابقة غير مكتملة ، ستتم مطابقة URI مع معلمات توجيهات الموقع. يتم استخدام كتلة ذات تركيبة ^ ~ ، تطابق URI لتحديد الكتلة. إذا لم يتم تمكين هذا الخيار ، يختار الخادم أفضل تطابق ويبحث أيضًا باستخدام التعبيرات العادية. يعد ذلك ضروريًا لتحديد أحد القوالب المناسبة. إذا تم العثور على تعبير مناسب ، فسيتم استخدامه. خلاف ذلك ، سيتم تطبيق مطابقة URI السابقة. ومع ذلك ، ضع في اعتبارك أن Nginx يفضل التطابقات الكاملة. إذا لم تكن موجودة ، سيبدأ البحث عن التعبيرات العادية ، ثم عن طريق URI. يتم تحديد تماثل البحث من خلال مجموعة من الأحرف ^ ~.

قاعدة try_files

هذه أداة مفيدة للغاية يمكنها التحقق من وجود الملفات بترتيب معين. يتم تطبيق معايير المطابقة الأولى لمعالجة الطلب. يمكنك استخدام الخيارات المتقدمة لتحديد كيفية خدمة الخادم للطلبات. يوجد هذا السطر افتراضيًا في أداة التهيئة:

try_files $ uri $ uri / /index.html؛

ماذا تعني؟ إذا وصل طلب تم تقديمه بواسطة كتلة موقع ، فسيحاول الخادم أولاً التعامل مع uri كملف. يتم توفير ذلك من خلال المتغير uri $. عندما لا يكون هناك تطابق له ، سيتم التعامل مع uri كدليل. يمكنك التحقق من وجوده عن طريق إضافة شرطة مائلة في النهاية: $ uri /. هناك حالات لن يتم فيها العثور على الملف أو الدليل. في هذه الحالة ، سيتم تحميل الملف الافتراضي - index.html. تستخدم القاعدة try_files المعلمة الأخيرة كعنصر احتياطي. ذلك هو السبب ملف معينيجب أن يكون في النظام. ومع ذلك ، إذا لم يتم العثور على تطابق على الإطلاق ، فسيعيد Nginx صفحة خطأ. لتعيينه ، اكتب = ورمز الخطأ:

خيارات اضافية

إذا قمت بتطبيق قاعدة الاسم المستعار ، فيمكنك عرض صفحات كتلة الموقع خارج الدليل الجذر ، على سبيل المثال. عند الحاجة إلى ملفات من doc ، سيتم طلبها من / usr / share / doc /. بالإضافة إلى ذلك ، يقوم الفهرس التلقائي على القاعدة بتشغيل قائمة بأدلة الخادم لتوجيه الموقع المحدد. إذا قمت بكتابة سطور الرفض والسماح ، يمكنك تغيير الوصول إلى الدلائل.

في الختام ، من الجدير بالذكر أن Nginx قوي جدًا. أداة متعددة. ولكن لفهم مبدأ عملها جيدًا ، سوف يستغرق الأمر وقتًا وجهدًا. إذا فهمت كيفية عمل التكوينات ، فستتمكن من الاستمتاع الكامل بجميع ميزات البرنامج.

|

Nginx هو خادم ويب مجاني ومفتوح المصدر يُستخدم لخدمة مواقع الويب والتطبيقات بأي تعقيد. تشتهر Nginx بتأثيرها المنخفض على الذاكرة ، وقابليتها العالية للتوسع ، والبنية المعيارية التي تعتمد على الأحداث والتي يمكنها تقديم أداء موثوق ويمكن التنبؤ به. لا يعمل Nginx كخادم ويب فحسب ، بل يعمل أيضًا كموازن تحميل وخادم HTTP للتخزين المؤقت وكوكيل عكسي.

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

يمكن استخدام كل قسم بشكل مستقل ، لذا يمكنك تخطي الأقسام التي لا تحتاج إليها. يتم تمييز جميع القيم الشرطية في الأوامر باللون الأحمر ؛ بدلاً من هذه القيم ، يمكنك استبدال البيانات الخاصة بك.

ملحوظة: هذا يفترض أنك تقوم بتشغيل إصدار Nginx المثبت من المستودع الافتراضي على توزيعة تشبه دبيان. بعض الأوامر والتوجيهات الموضحة في هذا الدليل غير متوفرة في توزيعات أو إصدارات أخرى من Nginx مثبتة من مصادر أخرى.

تثبيت Nginx

قم بتحديث فهرس الحزمة ثم قم بتثبيت Nginx:

sudo apt-get update
sudo apt-get install nginx

التحقق من حالة Nginx

للتحقق من حالة خادم الويب على الجهاز الحالي ، اكتب:

sudo systemctl حالة nginx

التحميل التلقائي لـ Nginx

بشكل افتراضي ، تبدأ خدمة Nginx تلقائيًا. إذا كنت تريد تغيير هذا السلوك ، فاكتب:

sudo systemctl تعطيل nginx

لإضافة Nginx لبدء التشغيل مرة أخرى ، اكتب:

sudo systemctl تمكين nginx

إدارة خدمة Nginx

لإيقاف خادم Nginx ، أدخل الأمر التالي:

sudo systemctl stop nginx

لبدء تشغيل خادم Nginx ، اكتب:

sudo systemctl ابدأ nginx

لإيقاف الخدمة وبدء تشغيلها مرة أخرى ، اكتب:

أعد تشغيل sudo systemctl nginx

إذا قمت بتغيير التكوين ، يمكنك إعادة تحميل Nginx في الجلسة الحالية. أدخل الأمر التالي:

sudo systemctl إعادة تحميل nginx

إنشاء دليل جذر للمحتوى الثابت

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

ستنشئ الأوامر الموجودة في الكتلة أدناه دليلًا جذرًا جديدًا ، وتحويل الأذونات إليه إلى مستخدم sudo ، وتغيير أذونات كل دليل فرعي في دليل فرعي ضمن / var / www /.


sudo chown -R $ USER: $ USER /var/www/example.com/html
find / var / www -type d -exec chmod 775 () \ ؛

في هذه الحالة ، يقدم الدليل الجذر أذونات قراءة وتنفيذ عالمية. لتحديد أذونات أخرى ، استبدل 775 وحدد الأذونات المطلوبة.

تذكر أن حقوق الوصول يجب أن تتغير وفقًا للموقف.

إنشاء دليل جذر للملفات الديناميكية

إذا كان موقعك يستخدم وحدات ديناميكية مثل PHP-FPM ، فقد تحتاج إلى نقل الأذونات على بعض الملفات إلى مجموعة www-data. إذا احتاجت المجموعة حق الوصول للكتابة إلى الدليل ، فامنح ملكية المجموعة للدليل.

تقوم الأوامر أدناه بإنشاء جذر مستند جديد ، ومنحه لمجموعة بيانات www ، وتغيير الأذونات في كل دليل فرعي ضمن / var / www.

sudo mkdir -p /var/www/example.com/html
sudo chown -R www-data: www-data /var/www/example.com
sudo find / var / www -type d -exec chmod 775 () \ ؛

تمكين وتعطيل ملفات التكوين

لتمكين المضيف الظاهري ، تحتاج إلى إنشاء ارتباط رمزي من دليل المواقع المتاحة إلى الدليل الممكّن للمواقع ، والذي يقرأه Nginx في وقت بدء التشغيل.

للقيام بذلك ، أدخل الأمر:

sudo ln -s /etc/nginx/sites-available/example.com / etc / nginx / sites-enabled /

بعد ذلك ، تحتاج إلى إعادة تشغيل Nginx حتى يتم تحديث الإعدادات.

استكشاف أخطاء جدول التجزئة وإصلاحها

يستخدم Nginx جداول التجزئة لمعالجة البيانات الثابتة بسرعة (أسماء الخوادم وأنواع MIME). إذا كنت قد أضفت أسماء خوادم متعددة ، فمن المحتمل ألا يكون حجم تجزئة اسم الخادم المحدد كافيًا ، وسترى خطأ server_names_hash_bucket_size عند إجراء التغييرات. يمكن إصلاحه عن طريق تحرير قيمة واحدة في ملف /etc/nginx/nginx.conf.

افتح هذا الملف:

sudo nano /etc/nginx/nginx.conf

ابحث عن التوجيه server_names_hash_bucket_size في الملف. قم بإزالة الرمز # لإلغاء التعليق على السطر وزيادة قيمة التوجيه:

http (
. . .
server_names_hash_bucket_size 64 ؛
. . .
}

سيؤدي ذلك إلى زيادة حجم جداول تجزئة اسم خادم Nginx والسماح للخدمة بمعالجة جميع أسماء الخوادم التي أضفتها. احفظ الملف وأغلقه ، ثم أعد تشغيل Nginx لتحديث الإعدادات.

اختبار التكوين

في كل مرة تقوم فيها بإجراء تغييرات على ملفات تكوين Nginx ، تأكد من تشغيل الأمر التالي للتحقق من وجوده أخطاء في بناء الجملة:

إذا كانت هناك أخطاء في التكوين ، فسيشير إخراج الأمر بالضبط إلى مكان العثور عليها. إذا لم تكن هناك أخطاء في بناء الجملة في ملفات التكوين ، فسترى شيئًا مثل هذا:

nginx: صيغة ملف التكوين /etc/nginx/nginx.conf على ما يرام
nginx: نجح اختبار ملف التكوين /etc/nginx/nginx.conf

في حالة عدم وجود أخطاء ، يمكنك إعادة تحميل الخدمة:

أعد تشغيل sudo systemctl nginx

ملفات وأدلة Nginx المهمة

محتوى

يخزن الدليل / var / www / html كل محتويات الموقع (هذا هو الدليل الجذر للموقع). يمكنك التغيير الإعدادات القياسية Nginx وحدد الأدلة الأخرى في var / www.

تكوين الخادم

  • / etc / nginx /: دليل تكوين Nginx (يتم تخزين جميع ملفات تهيئة خادم الويب هنا).
  • /etc/nginx/nginx.conf: ملف التكوين الرئيسي لخادم الويب ، حيث توجد جميع الإعدادات العامة.
  • / etc / nginx / sites-available / default: مضيف Nginx الافتراضي. يجب أيضًا تخزين المضيفات الظاهرية الأخرى في دليل المواقع المتاحة (لكنها لن تعمل بدون ارتباط رمزي في المواقع التي تم تمكينها).
  • / etc / nginx / sites-enabled /: هذا هو المكان الذي يتم فيه تخزين ملفات المضيفات الظاهرية الممكّنة. عند بدء التشغيل أو إعادة التشغيل ، يقرأ Nginx ملفات التكوين والروابط في هذا الدليل لبناء التكوين الكامل.

السجلات

  • /var/log/nginx/access.log: هذا هو السجل الذي يسجل جميع طلبات Nginx (ما لم تنص تهيئة خادم الويب على خلاف ذلك).
  • /var/log/nginx/error.log: هذا هو سجل الأخطاء.

للوصول إلى سجلات systemd لعملية Nginx ، قم بتشغيل هذا الأمر:

sudo journalctl -u nginx

خاتمة

تم سرد هذا الدليل الإجراءات العامةيدعم خوادم nginx. لمعرفة المزيد حول العمل مع Nginx ، راجع الدروس التالية.

العلامات:

يعد خادم الويب Nginx أحد أكثر خوادم الويب شيوعًا مع أداء عالٍ جدًا ومعالجة سريعة للطلبات الثابتة من المستخدمين. في الإعداد الصحيحيمكنك تحقيق أداء عالٍ جدًا من خادم الويب هذا. يتعامل Nginx مع الملفات الثابتة بسرعة كبيرة ، سواء أكان ذلك صفحات htmlأو أنواع أخرى من الموارد.

في إحدى المقالات السابقة ، درسنا بالفعل تكوين معلماته الرئيسية ، في نفس المقالة أريد أن أتناول المزيد من التفاصيل حول أداء وإعداد خادم الويب للاستخدام في ظروف القتال. بالنسبة لتوزيع Linux ، سننظر اليوم في CentOS ، وغالبًا ما يتم استخدام هذا النظام على الخوادم وقد تكون هناك بعض الصعوبات في إعداد Nginx. بعد ذلك ، سننظر في إعداد Nginx CentOS ، لنتحدث عن كيفية تمكين الدعم الكامل لـ http2 و google Pagespeed وإعداد ملف التكوين الرئيسي.

رسميًا مستودعات CentOSيوجد Nginx وعلى الأرجح مثبت بالفعل على نظامك. لكننا نريد أن يعمل الموقع باستخدام بروتوكول http2 ، والذي يسمح لك بنقل جميع البيانات في اتصال واحد ، وهذا يزيد من الأداء. للعمل على http2 تحتاج إلى تكوين شهادة SSL، ولكن تم تناول هذا بالفعل في المقالة الحصول على شهادة Lets Encrypt Nginx. ولكن هذا ليس كل شيء. تستخدم معظم المتصفحات الآن بروتوكول ALPN للتبديل من SSL العادي إلى HTTP2.0 ، وقد تم دعمه منذ OpenSSL 1.02. بينما المستودعات لديها فقط OpenSSL 1.01. لذلك ، نحتاج إلى تثبيت إصدار من Nginx تم إنشاؤه باستخدام OpenSSL 1.02. يمكن استخدام الريبو المكسور لهذا:

sudo yum -y install yum-utils
# sudo yum-config-manager --add-repo https://brouken.com/brouken.repo

إذا كنت تستخدم مستودع EPEL ، فأنت بحاجة إلى تحديد أنك لست بحاجة إلى أخذ Nginx منه:

sudo yum-config-manager --save --setopt = epel.exclude = nginx * ؛

الآن ، لتثبيت الإصدار الصحيح من Nginx ، اكتب فقط:

sudo yum قم بتثبيت nginx

أكثر احدث اصدار Nginx 1.13.2 ، مع دعم ALPN الكامل. دعنا ننتقل إلى الإعداد.

2. إعداد Nginx

الخطوة الأولى هي النظر في بنية ملف التكوين. للوهلة الأولى ، قد يبدو كل شيء هنا مربكًا للغاية ، لكن كل شيء منطقي تمامًا هناك:

خيارات عالمية
أحداث ()
http (
الخادم(
موقع()
}
الخادم()
}

أولاً ، هناك خيارات عالمية تحدد المعلمات الرئيسية للبرنامج ، على سبيل المثال ، من أي مستخدم سيتم إطلاق البرنامج وعدد العمليات. هناك قسم المقبل. الأحداث، الذي يصف كيفية استجابة Nginx للاتصالات الواردة ، متبوعًا بقسم http، والذي يجمع بين جميع الإعدادات المتعلقة بتشغيل بروتوكول http. يحتوي على قسم الخادم، كل قسم مسؤول عن مجال منفصل ، يحتوي قسم الخادم على أقسام موقع، كل منها مسؤول عن عنوان URL لطلب معين ، لاحظ أنه ليس ملفًا على الخادم ، كما هو الحال في Apache ، ولكن عنوان URL للطلب.

سنقوم بعمل الإعدادات العامة الرئيسية في ملف /etc/nginx/nginx.conf. بعد ذلك ، ضع في اعتبارك ما الذي سنغيره بالضبط وما هي القيم التي من المرغوب تعيينها. لنبدأ بالخيارات العالمية:

  • مستخدم- يجب أن يكون المستخدم الذي سيتم تشغيل الخادم باسمه هو مالك الدليل الذي يحتوي على ملفات الموقع ، ويجب تشغيل php-fpm نيابة عنه ؛
  • عمليات_العمال- يجب تعيين عدد عمليات Nginx التي سيتم إطلاقها بالضبط بقدر عدد النوى لديك ، على سبيل المثال ، لدي 4 ؛
  • عامل_cpu_affinity- تسمح لك هذه المعلمة بتعيين كل عملية إلى نواة معالج منفصلة ، وتعيين القيمة على "تلقائي" بحيث يختار البرنامج نفسه ما وما الذي سيتم إرفاقه به ؛
  • worker_rlimit_nofile - الحد الأقصى للمبلغالملفات التي يمكن للبرنامج فتحها ، تحتاج إلى ملفين على الأقل لكل اتصال ، وستحتوي كل عملية على عدد الاتصالات التي تحددها ، وبالتالي فإن الصيغة هي: worker_processes * worker_connections * 2 ، المعلمة اتصالات العمالسنقوم بتحليل أقل قليلاً ؛
  • pcre_jit- تمكين هذا الخيار لتسريع معالجة التعبيرات العادية باستخدام ترجمة JIT ؛

في قسم الأحداث ، يجب عليك تكوين معاملين:

  • اتصالات العمال- يجب أن يكون عدد التوصيلات لعملية واحدة كافياً لمعالجة الاتصالات الواردة. نحتاج أولاً إلى معرفة عدد هذه الاتصالات الواردة ، لذلك ننظر إلى الإحصائيات على عنوان ip_server / nginx_status. كيفية التمكين انظر أدناه. في سطر الاتصالات النشطة ، نرى عدد الاتصالات النشطة بالخادم ، وتحتاج أيضًا إلى مراعاة أنه يتم أيضًا حساب الاتصالات مع php-fpm. بعد ذلك ، انتبه إلى الحقول المقبولة والمعالجة ، حيث يعرض الأول الاتصالات التي تمت معالجتها ، والثاني - عدد الاتصالات المقبولة. من القيم يجب أن تكون هي نفسها. إذا اختلفوا ، فلا توجد اتصالات كافية. انظر الأمثلة ، الصورة الأولى هي المشكلة ، والثانية هي الترتيب. بالنسبة لتهيئتي ، قد يكون الرقم 200 اتصال هو الأمثل (800 في المجموع ، مع الأخذ في الاعتبار 4 عمليات):

  • متعدد القبول- يسمح للبرنامج بقبول عدة اتصالات في نفس الوقت ، كما يعمل على تسريع العمل ، مع عدد كبير من الاتصالات ؛
  • Accept_mutex- اضبط قيمة هذه المعلمة على إيقاف التشغيل ، بحيث تتلقى جميع العمليات إشعارًا على الفور بشأن التوصيلات الجديدة ؛

يوصى أيضًا باستخدام توجيهات epoll في قسم الأحداث ، نظرًا لأن هذه هي الطريقة الأكثر فاعلية للتعامل مع الاتصالات الواردة لنظام Linux ، ولكن يتم استخدام هذه الطريقة افتراضيًا ، لذلك لا أرى أي سبب لإضافتها يدويًا. ضع في اعتبارك بعض المعلمات الإضافية من قسم http:

  • إرسال ملف- استخدم طريقة إرسال بيانات الإرسال. الطريقة الأكثر فاعلية لنظام التشغيل Linux.
  • tcp_nodelay ، tcp_nopush- يرسل الرؤوس ويطلب النص في حزمة واحدة ، ويعمل بشكل أسرع قليلاً ؛
  • استمر في حياة الوقت الضائع- مهلة الحفاظ على الاتصال بالعميل ، إذا لم يكن لديك نصوص بطيئة جدًا ، فستكون 10 ثوانٍ كافية ، قم بتعيين القيمة طالما كان ذلك ضروريًا بحيث يمكن للمستخدم الاتصال بالخادم ؛
  • reset_timedout_connection- افصل الاتصالات بعد انتهاء المهلة.
  • open_file_cache- معلومات عن ذاكرة التخزين المؤقت الملفات المفتوحة. على سبيل المثال ، open_file_cache max = 200000 غير نشط = 120 ثانية ؛ max - الحد الأقصى لعدد الملفات في ذاكرة التخزين المؤقت ، ووقت التخزين المؤقت.
  • open_file_cache_valid- عندما تحتاج إلى التحقق من ملاءمة الملفات. على سبيل المثال: open_file_cache_valid 120s ؛
  • open_file_cache_min_uses- التخزين المؤقت فقط للملفات التي تم فتحها بعدد المرات المحدد ؛
  • open_file_cache_errors- تذكر أخطاء فتح الملف.
  • if_modified_since- يحدد كيفية معالجة الرؤوس إذا تم تعديلها - منذ. باستخدام هذا العنوان ، يمكن للمتصفح الحصول على استجابة 304 إذا لم تتغير الصفحة منذ آخر مرة تم عرضها فيها. هناك خيارات - لا ترسل - أرسل إذا كان الوقت مطابقًا تمامًا - بالضبط ، أرسل إذا كان الوقت مطابقًا تمامًا أو أكثر - قبل ؛

هذا ما سيبدو عليه إعداد nginx conf:

مستخدم nginx
عمليات العمال 4 ؛
worker_cpu_affinity auto؛
worker_rlimit_nofile 10000 ؛
pcre_jit على ؛
error_log /var/log/nginx/error.log warn ؛
load_module "modules / ngx_pagespeed.so" ؛
أحداث (
متعدد في ؛
Accept_mutex معطلة ؛
عامل_توصيلات 1024 ؛
}
http (
Sendfile قيد التشغيل ؛
على tcp_nopush ؛
tcp_nodelay على ؛
open_file_cache max = 200000 غير نشط = 20 ثانية ؛
open_file_cache_valid 120s ؛
open_file_cache_errors على ؛
reset_timedout_connection on ؛
client_body_timeout 10 ؛
keepalive_timeout 65 ؛
تشمل /etc/nginx/sites-enabled.*.conf
}

3. إعداد http2

لن أصف بالتفصيل تكوين قسم الخادم ، لأنني قمت بذلك بالفعل في مقالة تثبيت Nginx في Ubuntu وليس لدي ما أضيفه هنا ، تكوين SSL هو موضوع شامل إلى حد ما وسيتم مناقشته أيضًا في مقالة منفصلة. ولكن لإعداد http2 ، يجب أن يكون لديك SSL بالفعل. بعد ذلك ، ما عليك سوى تعديل توجيه الاستماع في قسم الخادم الخاص بك:

استمع 194.67.215.125:443 default_server ؛

استمع 194.67.215.125:443 http2 default_server ؛

مثله بطريقة بسيطةمن الممكن تمكين http2 إذا تم تثبيت الإصدار الصحيح من Nginx من قبل.

4. ضبط سرعة الصفحة

إن Google Pagespeed عبارة عن وحدة Nginx تقوم بإجراء تحسينات متنوعة لجعل الصفحات يتم تحميلها بشكل أسرع ، ويعمل خادم الويب بشكل أكثر كفاءة ، ويشعر المستخدمون بالراحة. وهذا يشمل التخزين المؤقت والتحسين كود أتش تي أم أل، وتحسين الصورة ، والجمع بين كود جافا سكريبت و css وأكثر من ذلك بكثير. كل هذا يتم على مستوى Nginx ، لذا فهو أكثر فاعلية مما لو قمت به في php. ولكن هناك عيب واحد ، تزيل الوحدة النمطية رأس الأخيرمعدل.

الحقيقة هي أن PageSpeed ​​يعيّن سطر تخزين مؤقت طويل جدًا لجميع الملفات ، ويضيف تجزئته إلى اسم الملف. هذا يجعل تحميل الموارد أسرع بكثير ، حيث سيطلب المستعرض الملفات ذات التجزئة الجديدة فقط ، وتتم إزالة LastModified حتى يتمكن المستخدمون من رؤية التغييرات في حالة تغيير أي ملف. الآن دعونا نلقي نظرة على كيفية تثبيت الوحدة. سيتعين علينا أن نبنيها من المصدر.

قم أولاً بتثبيت أدوات البناء ، من المهم جدًا ، إذا لم تقم بتثبيتها ، فستتلقى خطأ ولن تعرف ما يجب فعله:

yum install wget gcc cmake unzip gcc-c ++ pcre-devel zlib-devel

قم بتنزيل واستخراج مصادر Nginx لإصدارك ، على سبيل المثال 1.13.3:

wget -c https://nginx.org/download/nginx-1.13.3.tar.gz
# tar -xzvf nginx-1.13.3.tar.gz

لا يتضمن إعداد خادم nginx إعادة بناء البرنامج واستبداله من المستودع ، فنحن نستخدم هذه المصادر فقط لبناء الوحدة. تنزيل واستخراج مصادر PageSpeed:

wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
# فك ضغط v1.12.34.2-stable.zip

قم بتنزيل مكتبة تحسين PageSpeed ​​وفك ضغطها في مجلد مصدر الوحدة النمطية:

القرص المضغوط ngx_pagespeed-1.12.34.2-Stable /
# wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
# tar -xvzf 1.12.34.2-x64.tar.gz

تنزيل واستخراج مصادر OpenSSL 1.02:

wget -c https://www.openssl.org/source/openssl-1.0.2k.tar.gz -O /opt/lib/$OPENSSL.tar.gz
# tar xvpzf openssl-1.0.2k.tar.gz

الآن نحن بحاجة لبناء الوحدة. أولاً ، دعنا نلقي نظرة على الخيارات التي تم إنشاء Nginx بها:

والآن ننتقل إلى المجلد باستخدام Nginx ، واستبدل جميع الخيارات المستلمة وخيار إضافة وحدة ديناميكية لـ PageSpeed ​​و OpenSSL وحاول إنشاء:

القرص المضغوط nginx-1.13.3
# ./configure --prefix = / etc / nginx --sbin-path = / usr / sbin / nginx --modules-path = / usr / lib64 / nginx / modules --conf-path = / etc / nginx / nginx .conf - Error-log-path = / var / log / nginx / error.log --http-log-path = / var / log / nginx / access.log --pid-path = / var / run / nginx .pid --lock-path = / var / run / nginx.lock --http-client-body-temp-path = / var / cache / nginx / client_temp --http-proxy-temp-path = / var / cache / nginx / proxy_temp --http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp --http-uwsgi-temp-path = / var / cache / nginx / uwsgi_temp --http-scgi-temp-path = / var / cache / nginx / scgi_temp --user = nginx --group = nginx - مع-موافقت - مع-ملف- aio - مع-سلاسل - مع-http_addition_module - مع-http_auth_request_module - مع-http_dav_module - مع - http_flv_module - مع - http_gunzip_module - مع - http_gzip_static_module - مع - http_mp4_module - مع - http_random_index_module - مع - http_realip_module - مع - http_ssecure_static_module - http_secure_static_module - - مع - http_sub_module - مع h-http_v2_module - with-mail - with-mail_ssl_module - with-stream - with-stream_realip_module - with-stream_ssl_module - with-stream_ssl_preread_module - with-cc-opt = "- O2 -g -pipe -Wall -Wp، -D_FORTIFY_SOURCE = 2 -الاستثناءات -fstack-protector-strong --param = ssp-buffer-size = 4 -grecord-gcc-switches -m64 -mtune = عام "- with-ld-opt = - مع -openssl = $ HOME / openssl-1.0.2k - add-dynamic-module = $ HOME / ngx_pagespeed-1.12.34.2-stabil $ (PS_NGX_EXTRA_FLAGS)
#يصنع

إذا تم كل شيء بشكل صحيح ، فستحصل عند الإخراج على الوحدة النمطية ngx_pagespeed.so في مجلد obj ، ستحتاج إلى نسخها إلى مجلد / etc / nginx / modules:

cp ngx_pagespeed.so /etc/nginx/modules/ngx_pagespeed.so

قم بإنشاء مجلد لذاكرة التخزين المؤقت:

mkdir -p / var / ngx_pagespeed_cache
# chown -R nginx: nginx / var / ngx_pagespeed_cache

أضف الآن هذا السطر لتمكين الوحدة في /etc/nginx/nginx.conf:

load_module "modules / ngx_pagespeed.so" ؛

سنعمل تحت حسابمستخدم عادي مع حقوق sudo. ستحتاج أيضًا إلى خادم ويب Nginx مثبت. إذا رغبت في ذلك ، يمكنك تثبيت LEMP الكامل (Linux و Nginx و MySQL و PHP). لتثبيت Nginx ، ما عليك سوى تشغيل الأمر التالي:

sudo apt-get update sudo apt-get install nginx

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

الخطوة 1 - إعداد دليل جذري جديد

افتراضيًا ، يتم تمكين مضيف ظاهري واحد فقط على خادم Nginx. يعمل مع المستندات على: / usr / share / nginx / html. سنقوم بتغيير هذا الإعداد لأنه من المرجح أن نعمل مع دليل / var / www. لا يستخدم Nginx هذا الدليل افتراضيًا ، لأنه يتعارض مع سياسة دبيان لاستخدام الحزم في الدليل / var / www.

ولكن نظرًا لأننا مستخدمون عاديون ، ونادرًا ما نواجه مشكلات تخزين الحزمة ، فسوف نتجاهل هذه السياسة ونضع هذا الدليل كجذر. وبشكل أكثر تحديدًا ، يجب أن يتوافق كل دليل داخل الدليل الجذر مع موقع منفصل. وسنضع جميع ملفات الموقع في الدليل / var / www / site_name / html. أولاً ، لنقم بإنشاء جميع الأدلة الفرعية الضرورية. للقيام بذلك ، قم بتشغيل الأمر التالي:

sudo mkdir -p /var/www/example.com/html sudo mkdir -p /var/www/test.com/html

تخبر العلامة -p الصدفة بإنشاء أدلة جديدة إذا لم تكن موجودة في المسار المحدد. الآن سنقوم بنقل الحقوق إلى هذا الدليل مستخدم عادي. لنستخدم متغير البيئة USER $ لتجنب إدخال اسم حسابنا. بعد هذه الخطوات ، سنتمكن من إنشاء ملفات في الدليل / var / www / ، لكن لن يتمكن زوار الموقع من ذلك.

sudo chown -R $ USER: USER /var/www/example.com/html sudo chown -R $ USER: $ USER /var/www/test.com/html

يجب تعيين الأذونات على الدليل الجذر بشكل صحيح إذا لم تقم بتصحيح قيمة umask ، لكننا سنصلحها فقط في حالة:

sudo chmod -R 755 / var / www

لقد أعددنا هيكل الخادم الخاص بنا بالكامل ، ويمكننا المضي قدمًا.

الخطوة 2 - إنشاء قالب صفحة لكل موقع

لنقم بإنشاء صفحة يتم عرضها بشكل افتراضي عند إنشاء موقع جديد. قم بإنشاء ملف index.html في دليل المجال الأول:

Nano /var/www/example.com/html/index.html

في الداخل ، سنصنع الحد الأدنى من المحتوى لفهم الموقع الذي نتواجد فيه. فيما يلي مثال على المحتوى:

مرحبا بكم في Example.com!

هذا هو المضيف الظاهري example.com!



أحفظ وأغلق الملف. نظرًا لأن الملف الثاني سيحتوي على محتوى مشابه ، فما عليك سوى نسخه:

cp /var/www/example.com/html/index.html /var/www/test.com/html/

دعنا نجري بعض التغييرات عليها:

Nano /var/www/test.com/html/index.html مرحبًا بك في Test.com!

هذا هو المضيف الافتراضي test.com!



احفظ هذا الملف وأغلقه. سنرى الآن ما إذا تم تكوين مواقعنا بشكل صحيح.

الخطوة 3 - أنشئ ملفات مضيف افتراضية لكل مجال

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

إنشاء أول ملف مضيف افتراضي

كما قلت ، انسخ ملف التكوين تقصير:

sudo cp / etc / nginx / sites-available / default /etc/nginx/sites-available/example.com

لنفتح هذا الملف بحقوق المسؤول:

سودو نانو /etc/nginx/sites-available/example.com

إذا حذفت التعليقات ، يجب أن يبدو الملف كما يلي:

الخادم (استمع 80 default_server ؛ استمع [::]: 80 default_server ipv6only = تشغيل ؛ root / usr / share / nginx / html ؛ index.html index.htm ؛ server_name localhost ؛ الموقع / (try_files $ uri $ uri / = 404 ؛))

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

الشيء التالي الذي سنفعله هو إعداد الدليل الجذر باستخدام التوجيه الجذر. يجب أن يشير إلى الدليل حيث توجد جميع مستندات موقعك:

الجذر /var/www/example.com/html ؛

المذكرة: يجب أن تنتهي كل تعليمات Nginx بحرف "؛".

Server_name example.com www.example.com ؛

الخادم (استمع 80 default_server ؛ استمع [::]: 80 default_server ipv6only = تشغيل ؛ جذر /var/www/example.com/html ؛ index.html index.htm ؛ server_name example.com www.example.com ؛ الموقع / (try_files $ uri $ uri / = 404 ؛))

على هذا الإعداد الأساسيانتهى. أحفظ وأغلق الملف.

أنشئ مضيفًا افتراضيًا ثانيًا

للقيام بذلك ، ما عليك سوى نسخ ملف الإعدادات للموقع الأول:

sudo cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/test.com

افتح هذا الملف بحقوق المسؤول

sudo nano /etc/nginx/sites-available/test.com

في هذا الملف ، سنبدأ أيضًا بتوجيه الاستماع. إذا تركت الخيار default_server في الملف الأول ، فيجب حذفه هنا. من الضروري أيضًا إزالة الخيار ipv6only = on ، نظرًا لأنه محدد لمجموعة عنوان / منفذ واحد فقط:

الاستماع 80 ؛ استمع [::]: 80 ؛

قم بتعيين الدليل الجذر للموقع الثاني:

الجذر /var/www/test.com/html ؛

الآن دعنا نحدد server_name للمجال الثاني:

Server_name test.com www.test.com ؛

يجب أن يبدو الإعداد النهائي كما يلي:

الخادم (استمع 80 ؛ استمع [::]: 80 ؛ جذر /var/www/test.com/html ؛ index.html index.htm ؛ server_name test.com www.test.com ؛ الموقع / (try_files $ uri $ uri / = 404 ؛))

أحفظ وأغلق الملف.

الخطوة 4 - تفعيل المضيفات الظاهرية وإعادة تشغيل Nginx

لقد قمنا بإعداد مضيفينا الافتراضيين ، حان الوقت الآن لتنشيطهم. للقيام بذلك ، تحتاج إلى إنشاء روابط رمزية لهذه الملفات ووضعها في الدليل الممكّن للمواقع ، والذي يقرأه Nginx عند بدء التشغيل. يمكن إنشاء الروابط بالأمر التالي:

sudo ln -s /etc/nginx/sites-available/example.com / etc / nginx / sites-enabled / sudo ln -s /etc/nginx/sites-available/test.com / etc / nginx / sites-enabled /

سيقوم Nginx الآن بمعالجة هذه الملفات. ولكن يتم أيضًا تمكين المضيف الظاهري الافتراضي ، لذلك نحصل على تعارض معلمة خادم افتراضي. يمكنك تعطيل هذا الإعداد ببساطة عن طريق إزالة ارتباط الملف. سيبقى الملف نفسه في دليل sites-available ، حتى نتمكن دائمًا من إعادته إذا لزم الأمر.

sudo rm / etc / nginx / sites-enabled / default

هناك إعداد آخر يجب القيام به في ملف تكوين Nginx. افتحه:

sudo nano /etc/nginx/nginx.conf

تحتاج إلى إزالة التعليق من أحد الأسطر:

Server_names_hash_bucket_size: 64

يتم استخدام هذا التوجيه عند إعطاء عدد كبير من أسماء الخوادم ، أو عند إعطاء أسماء طويلة بشكل غير عادي. على سبيل المثال ، إذا كانت القيمة الافتراضية هي 32 وتم تعيين اسم الخادم على "too.long.server.name.example.org" ، فسيرفض nginx البدء ويعطي رسالة خطأ:

تعذر بناء server_names_hash ، يجب زيادة server_names_hash_bucket_size: 32

لذلك ، من الأفضل زيادة هذه القيمة إلى 64. الآن يمكنك إعادة تشغيل خادم الويب لتصبح التغييرات سارية المفعول:

إعادة تشغيل خدمة Sudo nginx

يجب أن يقوم خادمك الآن بمعالجة الطلبات لكلا المجالين.

الخطوة 5 - إعداد ملف Hosts محلي (اختياري)

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

يرجى ملاحظة أن هذه التغييرات يجب أن تتم فقط على الجهاز المحلي وليس على خادم VPS. سوف تحتاج حقوق الجذر، تحتاج أيضًا إلى أن يكون لديك الحق في تعديل ملفات النظام.

إذا كنت تستخدم نظام Mac أو Linux ، فيمكن إجراء الإصلاحات على النحو التالي:

sudo نانو / الخ / المضيفين

إذا كنت تستخدم Windows ، فيمكنك العثور على إرشادات لنظام التشغيل هذا على الموقع الرسمي للشركة المصنعة (أو على google). تحتاج إلى معرفة عنوان IP العام لخادمك وأسماء المجال التي تريد ربطها به. لنفترض أن عنواني هو 111.111.111.111 ، فأنا بحاجة إلى إضافة الأسطر التالية إلى ملف المضيفين:

127.0.0.1 localhost 127.0.0.1 guest-desktop 111.111.111.111 example.com 111.111.111.111 test.com

وبالتالي ، سوف نعترض جميع الطلبات الموجهة إلى هؤلاء أسماء المجالوإعادة توجيههم إلى خادمنا. احفظ وأغلق الملف عند الانتهاء.

الخطوة 6 - تحقق

على هذه المرحلةيجب أن تحصل على إعداد يعمل بشكل كامل. يبقى فقط للتحقق من ذلك. للقيام بذلك ، انتقل إلى عنوان المتصفح: http://example.com (: target = "_ blank"). إذا تم عرض كلا الموقعين بشكل صحيح ، فيمكن تهنئتك التخصيص الكاملخادم nginx. في هذه المرحلة ، إذا أجريت تغييرات على ملف المضيفين ، فيجب حذفها. تم التحقق بنجاح ولم تعد هناك حاجة إليها. لفتح الوصول إلى المواقع لمستخدمي الإنترنت ، سيتعين عليك شراء أسماء النطاقات.

خاتمة

لقد تعلمت كيفية تكوين المضيفات الظاهرية بشكل كامل لكل موقع على الخادم الخاص بك. في الواقع ، لا توجد قيود على عدد المواقع على جهاز واحد ، باستثناء موارد النظام نفسه.



تحميل...
قمة