مدت زمان تقریبی مطالعه: 8 دقیقه
15 آذر 1400
10 دلیلی که باید از Nginx استفاده کنید
Nginx چیست و دقیقا به چه علت محبوبیت چشمگیری پیدا کردهاست؟ امروزه محدودیتی برای تعداد اتصالاتی که در شبکه ایجاد میشود وجود ندارد. برای غلبه بر این مشکل، Nginx با معماری رویداد محور و ناهمزمان معرفی شد که کاملاً با معماری مبتنی بر فرآیند سنتی متفاوت است. داخل این مطلب به طور مفصل در این مورد صحبت خواهیم کرد. با این مطلب نادین سافت جهت کسب اطلاعات بیشتر همراه باشید و در صورت نیاز به مشاوره و دریافت پاسخ سوالات خود، پیشنهاد میکنیم حتما با ما ارتباط بگیرید.

وب سرور چه هست و چه می کند؟
یک وب سرور، نرمافزار و سختافزاری است که از پروتکل HTTP (پروتکل انتقال Hypertext) و سایر پروتکلها برای پاسخ به درخواستهای مشتری در وبجهانگستر یا همان اصطلاح معروف World Wide Web استفاده میکند. وظیفه اصلی یک وب سرور، نمایش محتویات وبسایت از طریق ذخیرهسازی، پردازش و ارائه صفحات وب به کاربران است. علاوه بر HTTP، سرورهای وب نیز از SMTP (Simple Mail Transfer Protocol) و FTP (File Transfer Protocol) پشتیبانی میکنند، که برای پست الکترونیکی، انتقال فایل و غیره مورد استفاده قرار میگیرند.
اما تفاوت مابین وب سرور نرم افزاری و سخت افزاری چیست؟ سخت افزار وب سرور به اینترنت متصل است و امکان تبادل داده با سایر دستگاههای متصل را فراهم میکند، در حالیکه نرم افزار وب سرور، نحوه دسترسی کاربر به فایلهای میزبانی شده را کنترل میکند. کاری که وب سرور انجام میدهد، مثالی از مدل مشتری / سرور server-client model)) است. همه کامپیوتر های میزبان وب سایتها باید نرمافزار وب سرور داشته باشند.
نگاهی کلی و گذرا به Nginx
Nginx یک وب سرور به حساب میآید، اما بیشترین استفادهای که از آن میشود، به عنوان «پروکسی معکوس» است. از این رو، میتوان آنرا به عنوان یک وب سرور و همچنین یک پروکسی معکوس مقیاسبندی کرد. البته این کار به شما اجازه نمیدهد که یک فرآیند را به یک اتصال کاملاً ویژه اختصاص دهید، اما یک مخزن (یا استخر یا یک منبع) فرآیند ایجاد میکند که میتواند به راحتی بین چندین اتصال در شبکه به اشتراک گذاشته شود.
بنابراین Nginx که به عنوان engine ex نیز شناخته میشود، یک نرمافزار وب سرور اوپن سورس است که طرفداران بیشماری دارد. این پروژه توسط ایگور سیسویف در سال 2002 آغاز به کار کرد. و به طور رسمی در اکتبر 2004 معرفی شد. اما دلیل به وجود ِآمدن آن چه بود؟ Nginx برای حل مشکل ِC10k ایجاد شده است؛ C10k به عنوان یک چالش، جهت مدیریت دهها هزار اتصال به طور همزمان شناخته میشود.
امروزه هیچ محدودیتی برای تعداد اتصالات موجود در شبکه وجود ندارد. برای غلبه بر این مشکل، این وب سرور با یک معماری رویدادمحور و غیرهمزمان معرفی شد که کاملا متفاوت از معماری مبتنیبر فرآیند سنتی بود. به همین دلیل است که انجین ایکس قابل اعتمادترین سروری است که سرعت و خاصیت مقیاسپذیری را حفظ میکند.

ویژگیهایی که Nginx را خاص کرده اند، چه هستند؟
- reverse proxying: همانطور که توضیح داده شد، این وب سرور یک سرویس پروکسی واسطه است که درخواست مشتری را دریافت میکند، آنرا به یک یا چند سرور ارسال میکند و متعاقباً پاسخ سرور را به مشتری تحویل میدهد.
- caching: سرور NGINX یک کَش (ذخیره موقت) برای محتوای استاتیک و پویا فراهم میکند که عملکرد را افزایش میدهد.
- load balancing: این ویژگی یک راه عالی برای مقیاسپذیر کردن ِبرنامه شما و افزایش عملکرد و بهبود آن است. Nginx، میتواند به عنوان یک متعادلکننده ساده و در عین حال قدرتمند پیکربندی شود تا در دسترسیپذیری و کارایی منابع سرور شما را بهبود بخشد.
- Performance: معماری رویداد محور (یا عملکرد محور) NGINX، آن را به یک انتخاب ایدهآل برای وب سایتهای پربازدید تبدیل میکند.
- low memory usage: از آنجاییکه انجین ایکس مبتنی بر رویداد است، نیازی به ایجاد فرآیندها یا موضوعات جدید برای هر درخواست ندارد، بنابراین میزان استفاده از حافظه توسط آن بسیار کم است.
- high concurrency: NGINX به طور پیش فرض تا 1024 اتصال همزمان را پشتیبانی میکند. با این حال، اکثر سیستمها میتوانند کارهای بیشتری را انجام دهند. این پیکربندی برای اکثر وب سایتها کافی است.
اجرای ترکیبی دو وب سرور Apache و Nginx ممکن است؟
شما میتوانید وب سروری را که میزبان وب سایتهای مشتریان (Apache) است، با استفاده از nginx، به عنوان یک وب سرور مکمل با کارایی بالا که معمولاً به عنوان یک سرور پروکسی معکوس استفاده میشود، بهبود دهید. زیرا این وب سرور به طور خاص برای ارائه مقادیر زیادی محتوای استاتیک (مانند تصاویر، ویدیو، css، xml و غیره) طراحی شده است. همانطور که در این مطلب اشاره شد، برخلاف Apache، nginx برای مدیریت تعداد زیادی از اتصالات همزمان، بسیار کارآمدتر است. یکی دیگر از مزیتهای این وب سرور در مقایسه با Apache این است که nginx به ازای هر اتصال کلاینت، حافظه کمتری نیاز دارد.

تمایز Apache و Nginx
حالا که در مورد اجرای ترکیبی دو وب سرور Apache و Nginx صحبت کردیم، بهتر است در مورد تفاوت آنها نیز صحبت کنیم.
- Apache یک سرور HTTP اوپن سورس است در حالی که Nginx یک وب سرور اوپن سورس با کارایی بالا و سرور پروکسی معکوس است.
- رفع اشکال، پشتیبانی، نگهداری و توسعه برنامه در Apache توسط جامعهای از کاربران از سراسر جهان مدیریت و انجام میشود و توسط بنیاد نرمافزار Apache هماهنگ میشود، در حالی که Nginx فقط توسط شرکتی که به همین نام تاسیس شده است، مدیریت میشود.
- یک تفاوت عمده بین این دو در نحوه رسیدگی به درخواست مشتری است. Apache انواع مختلفی از ماژولها را برای رسیدگی به درخواستهای مشتری و ترافیک وب ارائه میکند. اما Nginx طوری طراحی شده است که چندین درخواست مشتری را به طور همزمان با حداقل منابع سختافزاری مدیریت کند.
- در Apache، تنها یک اتصال اما در انجین ایکس میتوان چندین اتصال را همزمان مدیریت کرد. تمام فرآیندها همراه با سایر اتصالات در یک حلقه رویداد قرار میگیرند و به صورت ناهمزمان مدیریت میشوند. این فرآیند حافظه کمتری مصرف میکند و در نتیجه عملکرد را افزایش میدهد.
شرکتهایی که از این وب سرور استفاده میکنند
برخی از شرکتهای مطرحی که از Nginx استفاده میکنند عبارتند از:
- Autodesk
- Atlassian
- Intuit
- T-Mobile
- GitLab
- DuckDuckGo
- Microsoft
- IBM
- Adobe
- Salesforce
- VMWare
- Cisco
- Target
- Citrix Systems
- Apple
- و بسیاری دیگر
جایگاه Nginx در جهان چیست؟

رقابت بین Nginx و Apache بسیار شدید است، اما آنچه مسلم است محبوبتر بودنِ Nginx در حال حاضر است. اگر مجددا به عقب بازگردید و نام شرکتهای بزرگی که از انجین ایکس استفاده میکنند را بررسی کنید، یا نگاهی به مزایای آن بیندازید و تفاوتهای کلیدی اش را با Apache بررسی نمایید، دلیل این محبوبیت برایتان مسلمتر خواهد شد.
منابع
[1] https://medium.com/devopscurry/what-is-nginx-understanding-the-basics-of-nginx-in-2021-f8ee0f3d3d54
[3] https://www.javatpoint.com/difference-between-apache-and-nginx