فهرست محتوا
NGINX یک وبسرور متنباز و امن است که دارای کاربردهای مختلفی بوده و حداکثر کارایی و پایداری را به وبسایتها ارائه میدهد. انجین ایکس علاوه بر قابلیتهای عادی مرتبط با پروتکل HTTP، میتواند بهعنوان سرور پروکسی (Proxy Server) برای پروتکلهای ایمیلی مانند (IMAP ،POP3 و SMTP) و همچنین بهعنوان پروکسی معکوس و لود بالانسر (Load Balancer) برای پروتکلهای HTTP ،TCP و UDP عمل کند و به همین دلیل رقیب جدی وبسرور آپاچی به شمار میآید. بسیاری از شرکتهای معروف دنیا مانند Autodesk و T-Mobile و GitLab و DuckDuckGo و Microsoft و IBM و Google از این وبسرور قدرتمند و حرفهای استفاده میکنند. NGINX در سال ۲۰۰۲ توسط ایگور سیسویف (Igor Sysoev) طراحی و در اکتبر سال ۲۰۰۴ بهصورت عمومی منتشر شد و در سال ۲۰۱۹ نیز به قیمت ۶۷۰ میلیون دلار به شرکت F5 فروخته شد. ایگور این نرمافزار را با هدف حل مشکل C10k طراحی کرده بود، چالشی که به ناتوانی وبسرورها در مدیریت همزمان ۱۰،۰۰۰ اتصال مرتبط میشد که البته امروزه این مشکل با وجود معماری رویدادمحور و ناهمگام وبسرورها (Event-driven and Asynchronous Architecture) برطرف شده است.
بر طبق آخرین گزارش وبسایت netcraft، حدود ۲۶ درصد وبسایتها از وبسرور انجین ایکس و خدمات مرتبط با آن استفاده میکنند و انتظار میرود NGINX بهزودی تبدیل به محبوبترین وبسرور بازار شود. وبسایتهای پرترافیک علاقه زیادی به NGINX دارند زیرا این نرمافزار سرعتی بالا و همچنین توانایی فوقالعادهای در مدیریت حجم زیادی از درخواستها را دارد. NGINX همچنین به ایجاد ارتباطی امن میان مراکز داده (Data Center) و شبکههای متصل به آنها کمک فراوانی میکند. NGINX در امر آموزش نیز فعال بوده و مجموعه بزرگی از کتابهای الکترونیکی، وبینارها و ویدیوها را به کاربران ارائه میدهد. ما در این مقاله به بررسی نحوه عملکرد NGINX، کاربردها، مزایا و تفاوتهای آن با وبسرور آپاچی خواهیم پرداخت.
وبسرور NGINX چگونه کار میکند؟
NGINX برای انجام وظایف خود به منابع سختافزاری کمی نیاز داشته و میتواند به طور همزمان عملیات مختلفی را انجام دهد. انجین ایکس برخلاف وبسرور آپاچی برای هر درخواست HTTP، فرایند جدیدی را ایجاد نمیکند و بهجای آن از یک معماری رویدادمحور و ناهمگام استفاده میکند که همین مسئله باعث افزایش سرعت و مقیاسپذیری آن میشود. وبسرورهای سنتی برای هر درخواست ورودی، یک فرایند جدید ایجاد میکنند که همین امر باعث کندی وبسرور میشود اما NGINX از طریق یک فرایند اصلی (Master Process) میتواند چندین فرایند کارگر (Worker Process) را مدیریت کند. فرایندهای کارگر به لطف معماری ناهمگام (Asynchronous) انجین ایکس میتوانند درخواستهای ارسالی را بهصورت همزمان پردازش کنند و بنابراین هیچ درخواستی بدون پاسخ نمیماند. هر فرایند کارگر نیز از واحدهای کوچکتری به نام اتصالات کارگر تشکیل شده است که این اتصالات پس از رسیدگی به درخواستهای دریافتی، آنها را به سمت فرایند اصلی میفرستد. در پایان نیز فرایند اصلی، نتیجه نهایی را به کلاینت مربوطه ارسال میکند. شاید کمی عجیب باشد اما هر اتصال کارگر میتواند تا ۱۰۲۴ درخواست مشابه را بهصورت همزمان مورد پردازش قرار دهد. انجین ایکس همچنین دارای یک حافظه کش است که باعث افزایش هرچه بیشتر رسیدگی به درخواستهای کاربران میشود.
انجین ایکس چه مزایایی دارد؟
امروزه بسیاری از شرکتهای ارائهدهنده خدمات هاستینگ از وبسرور NGINX استفاده میکنند زیرا این وبسرور دارای مزایای متعددی است. انجین ایکس در دهه گذشته به طور مداوم به توسعه جنبههای مختلف وب مانند HTTP/2 کمک کرده و همیشه جزو وبسرورهای پیشرو در ارائه خدمات بوده است. NGINX دارای یک نسخه پولی به نام NGINX Plus است که دارای پشتیبانی بهتر و یکسری قابلیتهای اضافه میباشد. در ادامه به طور خلاصه با مزایای انجین ایکس آشنا میشویم.
- مجهز به یک لود بالانسر قدرتمند
- دارای یک پروکسی معکوس منحصربهفرد
- مجهز به یک درگاه API چندمنظوره (API Gateway)
- تسریع فرایندهای مرتبط با نوسازی زیرساختهای IT و اپلیکیشنها
- مجهز به حافظه کش (Cache Memory)
- پشتیبانی از ماژولهای متنوع
- مصرف منابع سختافزاری کم
- بهبود رتبه وبسایتها در موتورهای جستجو با افزایش سرعت بارگذاری
- سازگاری با زبانهای برنامهنویسی مختلف مانند روبی و پایتون
- سازگاری با سیستمهای مدیریت محتوای محبوبی مانند وردپرس و جوملا
- دارای رابط کاربری مدرن و کاربرپسند
- کمک به مدیریت هزاران اتصال همزمان
- پشتیبانی از پروتکلهای IMAP ،POP3 و SMTP
- امنیت و مقیاسپذیری بالا
- پایداری و عملکرد بالا
- و بسیاری از موارد دیگر
وبسرور انجین ایکس با وجود این همه مزایا، دارای معایبی نیز میباشد. بهعنوانمثال انجین ایکس بااینکه متنباز است اما کاربران کنترل زیادی بر ماژولهای آن ندارند و حتی نمیتوانند آنها را غیرفعال کنند و بنابراین شما برای سفارشیسازی وبسرور خود با محدودیتهایی مواجه هستید.
پروکسی معکوس (Reverse Proxy) چیست؟
NGINX همانطور که میدانید، میتواند بهعنوان پروکسی معکوس نیز عمل کند. اما پروکسی معکوس چیست و چگونه عمل میکند؟ پروکسی معکوس نوعی سرور پروکسی است که میان وبسرورها و کلاینتها (مانند مرورگر) قرار میگیرد و هر درخواست HTTP دریافتی را به سمت وبسرور مناسب ارسال میکند. پروکسیهای معکوس در مجموع به افزایش امنیت، سرعت و عملکرد وبسرورها کمک بسیاری میکنند. پروکسی معکوس برخلاف پروکسی فوروارد (Forward Proxy) که بهمنظور حفاظت از کاربران طراحی شده است، از وبسرورها در مقابل تهدیدات امنیتی محافظت میکند. پروکسی معکوس در واقع بهعنوان یک واسطه عمل میکند و تمام درخواستها را قبل از ارسال به وبسرور، مورد پردازش قرار میدهد.
لود بالانسینگ (Load Balancing) چیست؟
لود بالانسینگ (متعادل نمودن بار ترافیکی یا تعادل بار) به معنای توزیع متعادل ترافیک ورودی میان سرورهای یک شبکه میباشد و همان گونه که اشاره شد NGINX از این قابلیت مهم پشتیبانی میکند. وبسایتهای معروف و پربازدید ممکن است روزانه صدها هزار و یا حتی میلیونها بازدیدکننده داشته باشند و این حجم از ترافیک میتواند سرورها را تحت فشار قرار دهد. لود بالانسرها میان سرورها و کلاینتها قرار میگیرند و وظیفه آنها این است که به شکلی متعادل درخواستهای ورودی را میان سرورها توزیع کنند. انجام این کار مانع از تحت فشار قرار گرفتن سرورها و در نتیجه افزایش سرعت و عملکرد وبسایتها و وبسرورها میشود. اگر سروری خراب شود، لود بالانسر تا زمان اضافه شدن سرور جدید، ترافیک ورودی را به سمت سایر سرورها هدایت میکند. لود بالانسر همچنین تضمین میکند که سرورهای با ظرفیت مشابه، به طور مساوی مورد استفاده قرار بگیرند. برای درک بهتر لود بالانسینگ به این مثال توجه کنید. فرض کنید فروشگاهی دارای ۱۰ صندوق است که تنها یکی از آنها کار میکند. در چنین حالتی هم کار مسئول صندوق (سرور) بیشتر میشود و هم مشتریان (کلاینتها) باید زمان زیادی را صرف ماندن در صف خرید کنند. حال فرض کنید فروشگاه بهیکباره تمام صندوقهای خود را باز کند. انجام این کار باعث میشود تا زمان انتظار مشتریان برای حساب کردن خریدها بسیار کوتاهتر شود. لود بالانسرها نیز دقیقا به همین شکل عمل میکنند.
مقایسه انجین ایکس و آپاچی
انجین ایکس (NGINX) | آپاچی (Apache) | |
سرعت در ارائه محتوای استاتیک | ۲.۵ برابر سریعتر از آپاچی | متوسط |
سرعت در ارائه محتوای داینامیک | عالی | عالی |
سیستمعاملهای قابل پشتیبانی | از تمام سیستمعاملهای مبتنی بر یونیکس و ویندوز پشتیبانی میکند اما نسخههای ویندوزی چندان پایدار نیستند. | از تمام سیستمعاملهای مبتنی بر یونیکس و ویندوز پشتیبانی میکند. |
امنیت | امنیت بالا | امنیت بالا |
انعطافپذیری | انعطافپذیری کمتری نسبت به آپاچی دارد. | میتوان با استفاده از ماژولهای داینامیک آن را سفارشیسازی کرد و از انعطافپذیری خوبی برخوردار است. |
پشتیبانی | از پشتیبانی خوبی برخوردار است. | از پشتیبانی خوبی برخوردار است. |
معماری | معماری رویدادمحور (Event-Driven Architecture)، با هر رشته میتواند چندین درخواست را مورد بررسی قرار دهد. | معماری فرایندمحور (Process-Driven Architecture)، برای هر درخواست یک رشته ایجاد میکند. |
پیکربندی | عدم امکان دسترسی روت به فایلهای پیکربندی | امکان ایجاد تغییر در پیکربندی سایتها از طریق فایلهای htaccess. |
سوالهای متداول
علت محبوبیب بالای Nginx چیست؟
انجیناکس وبسرور قدرتمندی است که با توجه به معماری رویداد-محور و متقارن خود میتواند هزاران درخواست را به صورت همزمان مدیریت کند و بر خلاف وبسرورهای سنتی نیاز به منابع چندانی ندارد. Nginx همچنین به عنوان لودبالانسر و پروکسی معکوس عمل کرده و میتواند ترافیک ورودی را میان چندین سرور مختلف تقسیم کند که این عمل باعث افزایش سرعت و عملکرد وبسایتها و سرورها میشود. رایگان و متنباز بودن، مقیاسپذیری و انعطافپذیری بالا، جوامع کاربری بزرگ و مجهز بودن به قابلیتهای امنیتی و کشینگ حرفهای از جمله سایر دلایل محبوبیت انجینایکس هستند.
چرا انجینایکس بهتر از آپاچی است؟
انجینایکس بر خلاف آپاچی که از معماری سنتی فرآیند-محور استفاده میکند، دارای معماری رویداد-محور و متقارن بوده و میتواند به صورت همزمان تعداد بسیار زیادی درخواست را بدون هیچ مشکلی مدیریت کند. انجینایکس بر خلاف Apache از منابع سختافزاری و نرمافزاری کمتری استفاده میکند و دارای قابلیت لودبالانسینگ حرفهای است که این موضوع باعث بهبود عملکرد وبسایتها و صرفهجویی در هزینهها میشود. در مجموع Nginx مناسب هر نوع وبسایتی میباشد اما آپاچی بیشتر مناسب وبسایتهای با ترافیک کم تا متوسط میباشد. به این موضوع نیز توجه داشته باشید که Apache بر خلاف Nginx دارای تعداد زیادی ماژول است که این مسئله منجر به افزایش مصرف منابع و کاهش سرعت وبسایتها میشود.
کدام شرکتهای بزرگ از Nginx استفاده میکنند؟
امروزه Nginx از لحاظ محبوبیت در رتبه اول قرار داشته و بسیاری از شرکتهای بزرگ دنیا از آن استفاده میکنند که از میان معروفترین آنها میتوان به Netflix، Airbnb، Dropbox، Pinterest، Instagram و WordPress اشاره کرد.
حافظه کش چیست؟
کش (Cache) یا حافظه کش، سختافزار یا نرمافزاری است که با استفاده از آن میتوان دادههای کامپیوتری را بهصورت موقت ذخیره کرد و انجام این کار باعث میشود تا کاربران در دفعات بعد سریعتر به دادههای موردنظر خود دسترسی پیدا کنند. حافظه کش معمولا در CPUها، سیستمعاملها و مرورگرهای وب مورد استفاده قرار میگیرند.
در تهیه این مقاله از مقالههای وبسایتهای معتبری مانند papertrail ،elegantthemes ،javatpoint و hostinger استفاده شده است.