وب سرور NGINX چیست؛ با نحوه کار آن آشنا شوید
1 ارديبهشت 1400 ساعت 17:16
گروه فناوری:
در این مقاله سعی بر آن شده تا بطور ساده شرح دهیم که وب سرور NGINX چیست و با نحوه کار آن آشنا شویم. NGINX یک سرور رایگان، منبع باز (Open source)، با عملکرد بالا بوده و به عنوان پراکسی معکوس و پروکسی سرور IMAP / POP3 شناخته شده است. برای اینکه بدانید دلایل برتری NGINX چیست میتوان به طور خلاصه گفت که این وبسرور به دلیل عملکرد بالا، پایداری، مجموعه ویژگیهای غنی، پیکربندی ساده و مصرف کم منابع شناخته شده است. در ادامه، در این مقاله به شما خواهیم گفت انجین ایکس چیست و با نحوه کار و تفاوت آن با آپاچی آشنا خواهیم شد.
وبسرور انجین ایکس چیست؟
هنگام خرید سرور مجازی باید در نظر داشته باشید که کدام وبسرور مناسب نیازهای شما میباشد. NGINX به طور خاص برای رفع محدودیتهای عملکرد وبسرورهای Apache نوشته شده است. عملکرد عالی و مقیاسپذیری بی نظیر NGINX ناشی از ساختار رویداد محور event-driven)) آن میباشد که با رویکرد process-or-thread-per-connection در Apache کاملا متفاوت است.
در NGINX، هر پروسس worker process میتواند هزاران اتصال HTTP را به طور همزمان کنترل کند. از این رو پیادهسازی NGINX سبک، مقیاسپذیر و دارای عملکرد بالایی است. این معماری باعث میشود توازن بار داده و میزان استفاده از RAM، میزان استفاده از پردازنده یا cpu و زمان تأخیر بسیار قابل پیشبینیتر و بهینهتر از همتایان خود باشد.
هنگام خرید سرور، حتما در نظر بگیرید که NGINX Plus و NGINX بهترین گزینه به عنوان وبسرورهای مورد استفاده و راهحلهای ارائه برنامه هستند که توسط وبسایتهای پربازدید مانند Dropbox، Netflix و Zynga مورد استفاده قرار میگیرند. بیش از ۴۰۰ میلیون وبسایت در سراسر جهان برای داشتن سرعت بیشتر، فاکتور قابلیت اعتماد و ایمنتر بودن سایتهای خود به NGINX Plus و NGINX Open Source روی میآوردند.
NGINX به عنوان یک نرمافزار همهمنظوره جهت load balancer، وبسرور، API gateway و پراکسی معکوس (که برای معماری ابری طراحی شده است)، طراحی شده است و در صورت نیاز به خرید سرور اختصاصی و نصب NGINX روی آن، به شما کمک میکند که زیرساختهای فناوری اطلاعات و تلاش برای نوسازی برنامهها را تسریع کنید. همچنین NGINX Plus قابلیتهای بیشتری را برای شما فراهم میکند و قابلیت اطمینان و امنیت بالاتری را تضمین میکند.
NGINX چگونه کار میکند؟
NGINX برای میزان استفاده بسیار کم از حافظه Ram و همزمانی بالا ساخته شده است. NGINX به جای ایجاد پروسسهای جدید برای هر درخواست وب، از روشی ناهمگام و مبتنی بر رویداد استفاده میکند و درخواستها در یک thread واحد بررسی میشوند.
در NGINX، یک پروسس اصلی میتواند چندین پروسس worker processes را کنترل کند. درنتیجه هر درخواست میتواند توسط workerها و به طور همزمان در کنار سایر درخواستها، بدون این که مانع اجرای درخواستهای دیگر شود، اجرا میشود.
برخی از ویژگیهای رایج که در NGINX دیده میشود عبارتند از:
·Reverse proxy with caching
·IPv6
·Load balancing
·FastCGI support with caching
·WebSockets
·Handling of static files, index files, and auto-indexing
·TLS/SSL with SNI
قبل از کسب اطلاعات بیشتر در مورد نحوه عملکرد NGINX، بیایید نگاهی به نحوه کار یک سرور وب بیندازیم. وقتی شخصی درخواست باز کردن یک صفحه وب را ارسال میکند، مرورگر با سرور آن وبسایت وصل میشود. سپس سرور به دنبال منابع درخواستی صفحه میگردد و آنها را به مرورگر میفرستد. این سادهترین نوع درخواست است.
مثال فوق به عنوان یک thread واحد در نظر گرفته شده است. وبسرورهای سنتی برای هر درخواست یک thread جداگانه ایجاد میکنند، اما NGINX به این روش کار نمیکند. همانطور که قبلاً گفته شد، NGINX با معماری ناهمگام و مبتنی بر رویداد عمل میکند. این بدان معناست که threadهای مشابه، تحت یک worker process مدیریت میشوند و هر worker process شامل واحدهای کوچکتری به نام Worker connections است. در نتیجه کل این واحد مسئولیت رسیدگی به thread درخواست را دارد.Worker connections درخواستها را به یک worker process تحویل میدهد، که آنها نیز به نوبه خود نتیجه نهایی را برای thread اصلی ارسال میکنند و سرانجام thread اصلی نتیجه آن درخواست را به سمت فرستنده درخواست، ارسال میکند.
تفاوت وبسرور NGINX و آپاچی
در میان وبسرورهای محبوب، Apache یکی از اصلیترین رقبای NGINX است. آپاچی در دهه ۹۰ تولید شده و همچنین دارای جامعه کاربران زیادی است. اگر کنجکاو هستید که بدانید کدام وبسرور برای نیازهای شما مناسبتر است، پیشنهاد میشود نگاهی به این مقایسه کوتاه و آموزنده بین NGINX و Apache بیندازید.
۱. پشتیبانی از سیستم عامل
سازگاری یکی از جزئیاتی است که هنگام انتخاب نرمافزار باید در نظر داشته باشید. NGINX و Apache میتوانند روی بسیاری از سیستم عاملهای Unix کار کنند. اما متأسفانه باید اشاره کنیم که عملکرد NGINX در ویندوز به اندازه سایر سیستم عاملها قوی نیست.
۲. پشتیبانی کاربر
کلیه کاربران، از مبتدی گرفته تا افراد حرفهای، همیشه به یک منبع اطلاعاتی جامع و کاربردی نیاز دارند که در صورت مواجه شدن با مشکل بتواند به آنها کمک کند. در حالی که هر دو NGINX و Apache از پشتیبانی انجمن Stack Overflow برخوردار هستند، اما Apache فاقد پشتیبانی شرکت اصلی خود یعنی بنیاد Apache است.
۳. کارایی
NGINX میتواند ۱۰۰۰ اتصال محتوای استاتیک را به طور به طور همزمان و دو برابر سریعتر از Apache اجرا کند و از حافظه RAM کمتری استفاده میکند. اما در عملکرد هر دو وبسرور بر روی محتوای پویا، سرعت هر دو وبسرور یکسان است. NGINX برای کسانی که محتوای وبسایت استاتیک بیشتری دارند، انتخاب بهتری است.
۴. امنیت
Apache و NGINX هر دو وبسرورهای ایمنی هستند. تیم امنیتی Apache نیز وجود دارد که برای ارائه کمک و مشاوره به پروژههای Apache در مورد مسائل امنیتی و هماهنگی برای مدیریت آسیب پذیریهای امنیتی همواره در حال توسعه میباشد. این امر بسیار مهم است که سرورها را به درستی پیکربندی کنید و بدانید هر گزینه در تنظیمات چه کاری انجام میدهد. بسیاری از دستورالعملها برای ایمنسازی سرورها جهت جلوگیری از حملات امنیتی برای هر دو وبسرور وجود دارد.
۵. سادگی
توسعه و نوآوری برنامههای کاربردی در Apache آسانتر است. مدل یک اتصال در هر فرآیند (connection-per-process ) آپاچی امکان، قرار دادن ماژولها را در هر نقطه از وبسرویس بسیار آسان میکند. توسعهدهندگان میتوانند کدها را به گونهای اضافه کنند که در صورت عدم موفقیت، فقط روند worker process مربوطه تحت تأثیر قرار گیرد و در نتیجه پردازش سایر اتصالات بدون مشکل ادامه خواهد داشت.
از طرف دیگر، NGINX دارای معماری پیچیدهای است، بنابراین توسعه ماژولها کار آسانی نیست. توسعه دهندگان ماژول NGINX باید بسیار احتیاط کنند تا کدی کارآمد و دقیق و بدون هیچ گونه مشکلی ایجاد کنند.
کلام آخر
NGINX در اصل یک وبسرور است ولی در کنار آن، به عنوان پروکسی ایمیل، پروکسی معکوس و متعادل کننده بار (Load Balancing) نیز عمل میکند. ساختار نرمافزاری آن ناهمزمان و مبتنی بر رویداد است که پردازش همزمان بسیاری از درخواستها را امکانپذیر میکند. NGINX نیز بسیار به روز میباشد و به این معنی که خدمات آن همراه با افزایش تعداد مشتریان خود افزایش مییابد. NGINX و Apache در واقع هر دو از بهترین وبسرورهای بازار هستند و بسته به نیاز خود میتوانید از بین آنها انتخاب نمایید. در صورت نیاز به هرگونه راهنمایی یا مشاوره میتوانید با متخصصین وبرمز در این زمینه تماس حاصل نمایید.
کد مطلب: 267603