همانطور که میدانید زمانی که کاربر آدرس سایت مورد نظر را در مرورگر جستجو میکند، درخواست او به وب سرور داده میشود و سپس وب سرور نیز به آن پاسخ میدهد و درواقع سایت مورد نظر را برای کاربر به نمایش میگذارد. Nginx یک وب سرور Open Source است. این وب سرور بسیار سریع و با کارایی بالا است که میتواند برای ارائه فایلهای استاتیک نیز استفاده شود. Nginx به عنوان وب سرور محبوب مانند سرور Apache و IIS مایکروسافت در نظر گرفته میشود.
Nginx تحویل محتوا و برنامه را بهبود میبخشد، امنیت را افزایش میدهد و مقیاس پذیری و در دسترس بودن را برای پربازدیدترین وب سایتهای اینترنتی آسان میکند.
Nginx چیست؟
NGINX درواقع “engine-ex” تلفظ میشود. یک وب سرور Open Source، سریع و با کارایی بالا است که میتواند برای ارائه فایلهای استاتیک نیز استفاده شود.
این وب سرور در نسخه اولیه خود، برای وب سرویس HTTP عمل میکرد. با این حال، امروزه از آن بعنوان یک سرور پروکسی معکوس برای پروتکلهای HTTP ، HTTPS ، SMTP ، IMAP ، POP3 استفاده میشود.
همچنین تحویل محتوا و برنامه را بهبود میبخشد، امنیت را افزایش میدهد و مقیاس پذیری و در دسترس بودن را برای پر بازدیدترین وب سایت های اینترنتی آسان میکند.
به طور خلاصه، میتوان گفت که Nginx فقط نوعی نرم افزار است که در سرورهای وب برای ارائه درخواستهای همزمان استفاده میشود.
Nginx توسط Igor Sysoev ایجاد شد و اولین نسخه عمومی آن در اکتبر 2004 به منظور پاسخگویی به مشکل C10k ایجاد شد. جایی که C10k چالش مدیریت همزمان 10 هزار اتصال است. امروزه اتصالات بیشتری وجود دارد که سرورهای وب باید از آنها استفاده کنند. به همین دلیل، این وب سرور معماری رویداد محور و ناهمزمان را ارائه میدهد. این ویژگی nginx را به عنوان معتبرترین سرورها برای مقیاس پذیری و سرعت تبدیل میکند.
برخی از شرکتهای معروف که از Nginx استفاده میکنند عبارتند از IBM ، Google ، Atlassian ، Autodesk ، GitLab ، DuckDuckGo ، T-Mobile Microsoft ، Adobe ، Salesforce ، VMware ، LinkedIn ، Cisco ، Twitter ، Apple ، Intel ، Facebook و بسیاری دیگر.
چرا از Nginx استفاده کنیم؟
NGINX خدمات مختلفی مانند reverse پروکسی، متعادل کننده بار (Load Balancer) و خدمات محدودیت نرخ را ارائه میدهد. پروکسی معکوس در صورتی مفید است که چندین سرویس وب در پورتهای مختلف گوش دهیم و برای تغییر مسیر داخلی درخواست ها، به یک نقطه پایانی عمومی نیاز داشته باشیم. این به ما این امکان را میدهد که چندین نام دامنه را در پورت 80 میزبانی کنیم در حالی که از ترکیبی از NodeJs ، Go و java مختلف برای تأمین خدمات وب جداگانه در پشت صحنه استفاده میکنیم.
همچنین میتواند ورود، لیست سیاه، متعادل سازی بار و ارائه فایل های استاتیک را مدیریت کند در حالی که سرویس های وب بر آنچه که باید انجام دهند تمرکز میکند.
پیکربندی Nginx راحت تر از Apache httpd است و برای همزمانی بالا طراحی شده است و بسیار سریع است.
وب سرورNginx چگونه کار میکند؟
ابتدا نگاهی به نحوه عملکرد یک وب سرور بیاندازیم. هنگامی که ما درخواست باز کردن یک صفحه وب را داریم، مرورگر با سرور ارتباط میگیرد. سپس سرور به دنبال فایلهای درخواست شده برای صفحه می شود و آن را به مرورگر ارسال میکند. این ساده ترین نوع کار برای درخواست است.
سرورهای وب مانند Apache برای هر درخواست یک رشته ایجاد میکنند، اما Nginx به این روش کار نمیکند. بلکه با معماری ناهمزمان و رویداد محور اجرا میکند. این برنامه هوشمندانه رویدادهای یک فرایند را دنبال میکند.
Nginx شغل خود را به فرآیند کارگر و ارتباطات کارگر تقسیم کرد. در اینجا، اتصالات کارگر برای مدیریت درخواست ارائه شده و پاسخ دریافت شده توسط کاربران در وب سرور استفاده میشود. درعین حال، این درخواستها به فرآیند مادر منتقل میشود که به آن فرآیند کارگر میگویند.
یک مثال برای سرور Nginx که به طور همزمان درخواست های فایل MP3 و MP4 را مدیریت میکند:
با توجه به تصویر بالا یک اتصال کارگر واحد میتواند همزمان 1024 اتصال را اداره کند. این بهترین توانایی اتصال کارگر است. ممکن است بر اساس نوع سروری که داریم، تعداد ‘n’ فرآیند کارگر در Nginx وجود داشته باشد و هر فرآیند کارگر کارهای مختلفی را انجام دهد تا بتواند تعداد بیشتری از درخواستهای همزمان را اداره کند.
در نهایت، فرآیند کارگر درخواست ها را به فرآیند اصلی Nginx منتقل میکند که فقط به درخواستهای منحصر به فرد پاسخ میدهد.
از آنجا که اتصال کارگر می تواند تا 1024 درخواست مشابه را برطرف کند. به همین دلیل، این وب سرور میتواند هزاران درخواست را بدون هیچ مشکلی اداره کند. همچنین به همین دلیل است که به یک سرور عالی برای وب سایتهای پربازدید مانند e-commerce، search engines و cloud storage تبدیل شد.
برخی از ویژگی های Nginx به شرح زیر است:
پروکسی معکوس با ذخیره سازی
IPV6
تعادل بار (Load Balancer)
سوکتهای وب
مدیریت پروندههای استاتیک، فهرست بندی پروندهها و نمایه سازی خودکار
پشتیبانی از FastCGI با ذخیره سازی
بازنویسی و تغییر مسیر URL
جهت مطالعه دیگر مقالات مرتبط صفحه آموزشگاه را مشاهده نمائید.
منبع: www.javatpoint.com