Nginx (انجینکس) چیست ؟
nginx نامweb server/reverse proxy ی سبکی است که در سال ۲۰۰۲ به علت مشکل تعداد درخواست زیاد در سایت روسی www.rambler.ru شکل گرفت و در سال ۲۰۰۴ اولین نسخه رسمی خود را انتشار داد. تا کنون این وب سرور 11.28%. از سهم تمام وب سرور های دنیا را در دست دارد.
این وب سرور که هر روز جمع بیشتری از آن استفاده می کنند WordPress.com را لیست استفاده کننده گان خود دارد.
از نکات مهم این وب سرور این است که بر روی سیستم عامل های windows linux Bsd و osx به راحتی نصب می شود
در این سیستم استفاده از روش asynchronous event-driven است که باعث شده که به میزان استفاده ثابت از RAM برسیم.
asynchronous event-driven چیست؟
وب سرور ها به طریق مختلفی اقدام به مدیریت درخواست ها (connection ) می کنند
- برای هر درخواست یک process جدید درست می کنند
- برای هر درخواست یک process جدید درست می کنند در حالی که سیستم connection poll هم دارند که تا مدتی process ها را نگه می دارد و در صورتی که در آن زمان درخواست جدیدی بیاید از process های بیکار استفاده می کنند
- برای هر درخواست یک thread جدید درست می کنند
- برای هر درخواست یک thread جدید درست می کنند در حالی که سیستم thread poll هم دارند که تا مدتی thread ها را نگه می دارد و در صورتی که در آن زمان درخواست جدیدی بیاید از thread های بیکار استفاده می کنند
- یک process همه event ها را مدیریت می کند. (قبول درخواست، پاسخ به کاربر، خواندن داده و … )
- ترکیبات روش ها
Nginx از روش چهارم استفاده می کند به همراه ساخت process برای مجموعه از event ها … البته مقداری مشخص را در config مشخص می کند. همه این ها برای این است که بیشترین استفاده را از سیستم خود بکنیم.
به طور کلی باز کردن process و thread هزینه بر است و از آن مهمتر مدیریت اینهاست. وب سرورهایی شبیه Apache که process و thread هستند با درخواست های زیاد به شدت درگیر مدیریت process و thread می شوند که در نتیجه فشار زیاد تری به سرور می آورند
http://www.devside.net/articles/apache-performance-tuning
The more RAM your system has, the more processes [and threads] Apache can allocate and use; which directly translates into the amount of concurrent requests/clients Apache can serve.
ارتباط مستقیمی بین RAM و درخواست ها در این وب سرور ها وجود دارد که در روش nginx تا جای ممکن از استفاده ی اضافه آن جلوگیری شده است.
توضیح دیگری را دیدم که جالب به نظر می رسید.#
فکر کنید که وب سرور یک پیتزا فروشیست که باید سفارش ها را از طریق تلفن دریافت کند. در روش process و thread فروشگاه کارمند استخدام می کند (process و thread) که هرکدامشان یک خط تلفن دارند و هر کدام سفارش را از طریق تلفن می گیرند و صبر می کنند تا پیتزا حاضر شود تا به مشتری بگویند ( هنوز تلفن قطع نشده) پیتزای شما حاضر است.
در روش Nginx فقط تعداد محدودی کارمند استخدام می شود که تلفن ها را پاسخ می دهد و می گوید به محض حاضر شدن به شما می گوییم. و وقتی حاضر شد زنگ می زند.
nginx چه کارهایی بلد است؟
nginx علاوه بر این که یک وب سرور است reverse proxy و e-mail (IMAP/POP3) proxy هم هست … علاوه بر درخواست های http در خواست های مربوط به IMAP و POP3 هم می تواند از امکانات nginx استفاده کند. در این روش شما می توانید از روش ها loadbalancing و چیزهایی از این قبیل برای ایمیل استفاده کنید. البته شما می توانید حتی کارهای عجیب غریبی مثل authentication mail را هم از طریق nginx انجام دهید.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .