آموزش کاربردی وب سرور Nginx – قسمت اول

ایجاد شده توسط | بهمن ۲۳, ۱۳۹۵

مقدمه

در پست های قبل در مورد وب سرور های مختلف از جمله Nginx ، نحوه نصب و تعریف Server Block در ان بحث شد. پس از اشنایی و نصب این وب سرور زمان ان فرا رسید تا این وب سرور را بصورت عمیق تر شناخته، کانفیگ و مدیریت ان را یاد بگیرید. در این مقاله مفاهیم پایه بصورت کلی مطرح میشود تا با نحوه کارکرد این وب سرور اشنا شوید. در صورتی که nginx در سرور شما نصب نیست دست بکار شده و ان را روی سرور خود نصب نمایید. آموزش نصب Nginx در همین وب سایت موجود میباشد.

 

در این مقاله با مفاهیم زیر اشنا خواهید شد:

  • اشنایی با نحوه Start, Stop و Reload کردن تنظیمات
  • اشنایی با ساختار فایل Configuration وب سرور Nginx
  • تنظیم وب سرور برای ارائه فایل ها و محتوای Static
  • استفاده از Nginx به عنوان Proxy Server
  • نحوه متصل کردن Nginx به برنامه های تحت FastCGI

Nginx چگونه کار میکند؟

 در وب سرور Nginx یک Master Process و تعدادی Worker Process وجود دارد که مهمترین هدف Master Process خواندن، برسی تنظیمات و حفاظت از Worker Process ها میباشد. Worker Process ها پردازش درخواست هایی که به سمت وب سرور می آیند را انجام میدهند. Nginx با استفاده از مکانیزم رویداد گرایی مروبط به سیستم عامل بصورت کاملا موثر درخواست ها را بین Worker Process ها تقسیم میکند. تعداد Worker Process در فایل تنظیمات قابل تقییر میباشد. این تعداد میتواند ثابت و یا وابسته به تعداد هسته های در دسترس پردازشگر قابل تغییر باشد.

Nginx و ماژول های ان بر اساس فایل Configuration کار میکنند. بصورت پیشفرض فایل کانفیگ Nginx که nginx.conf نام دارد  ممکن است در یکی از در ادرس های /usr/local/nginx/conf, /etc/nginx و /usr/local/etc/nginx قرار داشته باشد.

نحوه Stop,Start و Reload تنظیمات

برای شروع به کار nginx باید فایل اجرایی آن را اجرا کنید. زمانی که وب سرور اجرا شد میتواند توسط فراخوانی دستور و پارامتر های مشخص کنترل شود. فرم کلی دستور بصورت زیر خواهد بود:

 

سیگنال ارسال شده جهت کنترل وب سرور بطور کلی بصورت زیر میباشد:

  • stop – وب سرور به سرعت متوقف میشود.
  • quit – برای مواقعی که درخواست های فعال پاسخ داده شده و سپس وب سرور متوقف میشود.
  • reload – تنظیمات وب سرور مجددا بارگزاری میشود.
  • reopen – فایل های لاگ وب سرور مجددا باز میشود.

برای مثال برای اینکه قبل از متوقف شدن وب سرور تمامی درخواست های ارسال شده به سمت Worker Process پاسخ داده شود میتوانید از دستور زیر استفاده نمایید:

توجه داشته باشید دستوراتی که برای کنترل این وب سرور استفاده میشود باید توسط همان نام کاربری که پروسس وب سرور را اجرا کرده است اجرا شود. تغییراتی که در فایل configuration انجام میشود تا زمان Reload اعمال نخواهد شد. برای این مورد میتوانید وب سرور را ریستارت و یا reload نمایید. برای reload وب سرور دستور زیر را در محیط Command Line وارد نمایید.

زمانی که پردازشگر اصلی وب سرور سیگنال Reload تنظیمات را دریافت میکند ابتدا درستی Syntax فایل configuration جدید را مورد برسی قرار داده در صورت عدم وجود مشکل در دستورات و بلاک دستورات، Master Process با ایجاد Worker Process جدید، سیگنال خاتمه کار یا اصطلاحا Shutdown را به Worker Process های قدیمی ارسال میکند. Worker Process های قدیمی درخواست های جدید که به سمت ان ارسال میشود را قبول نکرده و پس از پردازش درخواست های جاری از محدوده کاری خارج میشود. در صورتی که تنظیمات ایجاد شده اشتباه باشد سیگنال Reload اعمال نشده و وب سرور با تنظیمات قبلی به کار خود ادامه می دهد.

برای توقف پروسه Nginx میتوانید از دستور کمکی Kill مربوط به سیستم عامل نیز استفاده نمایید که بصورت مستقیم سیگنال ره به Process ارسال میکند. ابتدا باید PID پروسه را پیدا کنید. برای این منظور میتوانید از دستور زیر جهت مشاهده همه پردازش های Nginx استفاده نمایید:

ساختار فایل Configuration

 Nginx شامل ماژول هایی میباشد که این ماژول ها توسط Directive های درون فایل تنظیمات کنترل میشود. جهت استفاده از این ماژول ها Directive ایجاد شده که شامل نام و پارامتر میباشد که با سمی کالن (;) پایان می یابد. بلاک های Directive نیز با کمی تغییر درون علامت { } ایجاد میشود. Directive هایی که بتواند در درون خود Directive های دیگری داشته باشد Context نامیده میشود. برای نمونه در مثال زیر Directive های Server در Directive مربوط به http ایحاد میشود:

نکته: در بلاک تنظیمات برای کامنت کردن یک خط از علامت # استفاده میشود.

ارائه فایل های Static

 یکی از وظایف مهم وب سرور ارائه فایل های استاتیک به سرویس گیرنده است. این فایل ها میتواند شامل تصویر و یا فایل های استاتیک HTML باشد. فایل ها میتواند از ادرس های مختلف دایرکتوری در Local ارائه شود. برای مثال شما میتوانید فایل های HTML را از ادرس data/www/ و فایل های تصویر را از ادرس data/image/ به درخواست کاربر ارائه نمایید. برای انجام این کار باید فایل تنظیمات را ویرایش کرده و در بلاک server که در داخل بلاک http میباشد دو بلاک location تعریف کنید.
ابتدا یک دایرکتوری با ادرس data/www/ ایجاد کرده و در درون ان یک فایل index.html بسازید، سپس دایرکتوری data/image/ ایجاد کرده و یک تصویر در ان قرار دهید. توجه داشته باشید ادرس های بالا مثال بوده و در سناریو واقعی ادرس ها باید درست باشد یعنی برای استفاده از دایرکتوری home باید دایرکتوری های مورد نظر بصورت تو در تو در این دایرکتوری ایجاد شود. پس از ایجاد دایرکتوری فایل تنظیمات را باز کنید. فایل تنظیمات بصورت پیشفرض شامل بلاک سرور میباشد که در اغلب موارد خطوط بلاک سرور کامنت شده میباشد. برای شروع میتوانید خطوط کامنت شده را از حالت کامنت خارج نمایید:

 در حالت کلی فایل تنظیمات میتواند شامل تعدادی بلاک Server باشد که با توجه به پورت مورد استفاده و نام بلاک این بلاک ها با هم متمایز میشود. زمانی که یک درخواست به سمت Nginx ارسال شد با توجه به Header و پارامتر های درخواست، با توجه به تنظیمات موجود در فایل تنظیمات به ان پاسخ داده میشود. بلاک Location را در بلاک سرور اضافه کنید:

در بلاک Location پیشوند / مشخص میشود که این پیشوند با URI که از در درخواست وجود دارد مقایسه میشود. برای تطابق درخواست URI در مسیر مشخص شده در روت Directive که ادرس data/www/ است اضافه میشود تا ادرس فایل روی Local مشخص شود. اگر درخواست های ارسال شده با بلاک های Location مختلف مطابقت داشته باشد nginx طولانی ترین پیشوند را انتخاب می کند. بلاک Location بالا کوتاه ترین پیشوند را دارد، در صورتی که دیگر Location ها با درخواست های ارسال شده مطابقت نداشته باشد این بلاک استفاده خواهد شد. میتوانید حالا بلاک دوم Location را اضافه کنید:

بلاک بالا درخواست هایی که با ادرس image/ شروع شود را پاسخ می دهد. البته توجه داشته باشید که درخواست / Location نیز با این درخواست مطابقت دارد اما همانطور که عرض شد بلاک طولانی ترین پیشوند برای پاسخ به درخواست استفاده شده و در صورت عدم وجود و تطابق، کوتاه ترین پیشوند که / Location باشد انتخاب میشود.

در اخر بلاک سرور ایجاد شده در فایل تنظیمات باید مانند متن زیر باشد:

اگر ادرس فایل در تنظیمات به درستی وارد شود وب سرور به پورت 80 گوش میدهد و فایل های شما از طریق ادرس لوکال هاست http:// Localhost/. در دسترس خواهد بود. در پاسخ به درخواست های URIs هایی که با /image/ شروع میشود سرور فایل را از دایرکتوری با ادرس data/image/ ارسال میکند برای مثال در پاسخ به درخواست http://localhost/image/example.png وب سرور nginx فایل example که در دایرکتوری image قرار دارد را به درخواست ارسال میکند. زمانی که فایل درخواست شده موجود نباشد پاسخ یک ارور با کد 404 است که به درخواست داده میشود. برای اعمال تغییرات وب سرور را ریستارت کنید. اگر وب سرور به درستی کار نکرد و ایرادی در کارایی ان مشاهده کردید میتوانید لاگ ارور nginx را برسی نمایید. لاگ nginx در ادرس های زیر قرار دارد.

/var/log/nginx

/usr/local/nginx/logs


بخش اول اموزش به پایان رسید. قسمت دوم این مقاله در اینده نگارش خواهد شد تا ادامه مطالب ذکر شده اموزش داده شود.

موفق و پیروز باشید.

منبع “ویکی کانفیگ”

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *