Nginx چیست

Nginx چیست

در این مقاله می‌خواهیم با همدیگر به این سوال پاسخ دهیم که Nginx چیست و چه مزایا و کاربردهایی دارد. در ادامه، به نحوه نصب آن می‌پردازیم. Web server یکی از واحد‌های اساسی اینترنت است. در واقع، Web server‌ها رایانه‌هایی هستند که در زمان درخواست صفحات وب، آن‎ها را به شما ارائه می‌دهند. هر Web server، دارای یک آدرس IP و نام دامنه است. برای تبدیل رایانه به Web server، باید یکی از نرم‎افزارهای Web server مانند Apache، Tornado، XAMPP، Caddy، NGINX و غیره را نصب کنید.

در این مقاله، تمرکز ما بر روی پاسخ کامل و واضح به سوال ” Nginx چیست” و روش نصب این نرم ‎افزار بر روی سیستم است.

معرفی وب سرور Nginx

معرفی وب سرور Nginx

وب سرور Nginx (آن را به صورت engine-ex تلفظ کنید) یک وب سرور منبع باز است که در ابتدا، به عنوان جایگزینی برای آپاچی ارائه شده بود. این Web server توانست در عرض مدت زمان کوتاهی به موفقیت و محبوبیت زیادی برسد و جا پای خود را به عنوان یک پروکسی معکوس، کش HTTP و لود بالانسر محکم کند.

برخی از شناخته شده‌ترین شرکت‌هایی که از وب سرور Nginx استفاده می‌کنند عبارتند از:

  • Microsoft؛
  • IBM؛
  • Autodesk؛
  • GitLab؛
  • Atlassian؛
  • Twitter؛
  • LinkedIn؛
  • Cisco؛
  • Google؛
  • Facebook.

Nginx توسط ایگور سیسیوف (Igor Sysoev) ایجاد و در سال 2004 به انتشار عمومی رسید. تا قبل از معرفی این Web server، آپاچی در صدر جدول قرار داشت. یکی از بزرگترین معایب آپاچی، مشکل C10K بود. این مشکل به این اشاره دارد که در زمانی که 10000 اتصال به طور همزمان وارد شبکه می‌شوند، Web server از کار می‌افتد و سایت‌ها از دسترس خارج می‌شوند. وب سرور Nginx با ارائه ویژگی مقیاس‌پذیری عالی، به حل این مشکل کمک کرد و باعث شد که بسیاری از وب‎سایت‌های بزرگ و پر‎ترافیک، برای روبرو نشدن با مشکل C10K از آپاچی به سمت Nginx کوچ کنند.

Nginx چطور کار میکند؟

کاربردهای Nginx

حال که متوجه شدیم Nginx چیست و برای چه هدفی ارائه شده، نوبت آن می‌رسد که با سازوکار آن آشنا شویم. شما می‌توانید آن را بر روی سرور مجازی لینوکس نصب و راه‎اندازی کنید.

یکی از مهم‌ترین ویژگی‌های Nginx همزمانی بالا و نیاز به حافظه کم است. Nginx به جای ایجاد فرایند جدید برای هر درخواست وب، از رویکردی رویداد‎محور و ناهمزمان استفاده می‌کند که در آن، درخواست‌ها همگی در یک رشته پردازش می‌شوند.

در Nginx، فرآیند‌های اصلی می‌توانند چندین فرآیند کارگر (worker) را کنترل کنند. با اینکه پردازش واقعی توسط کارگران انجام می‌شود، هر مستر (master) فرآیند‌های کارگر را نگهداری می‌کند. از آنجایی که Nginx غیرهمزمان است، هر درخواست می‌تواند بدون مسدود کردن سایر درخواست‌ها، توسط یک کارگر اجرا شود.

برخی از مهم‌ترین و رایج‌ترین ویژگی‌های Nginx عبارتند از:

  • پروکسی معکوس با کش؛
  • IPv6؛
  • لود بالانسر؛
  • پشتیبانی از واسط دروازه مشترک (FastCGI) با کش؛
  • وب‎سوکت‌ها؛
  • مدیریت فایل‌های فهرست، فایل‌های استاتیک و فهرست‌سازی خودکار؛
  • گواهی‎نامه TLS/SSL با SNI.

معماری Nginx

معماری Nginx

وب سرور Nginx با پیاده‌سازی مدل‌های رویداد‎محور، غیر‎مسدود‎کننده و ناهمزمان، از معماری کارگر-مستر استفاده می‌کند.

  • هر کارگر، درخواست‌های جدید را از یک سوکت گیرنده مشترک قبول می‌کند و حلقه‌های اجرای بسیار کارآمد را برای پردازش هزاران درخواست، درون هر کارگر اجرا می‌کند.
  • مسترها با ایجاد، اتصال و عبور از سوکت‌ها، پیکربندی‌ها را می‌خوانند و تایید می‌کنند. همچنین، مدیریت شروع، پایان و نگهداری تعداد فرایند‌‎های کارگر پیکربندی‎شده بر عهده مستر است. گره مستر می‌تواند بدون وقفه، مجددا فرایند کارگر‌ها در سرویس را پیکربندی کند.
  • کش‌های پروکسی فرایند‌های خاصی هستند. هر کش پروکسی دارای یک بار‎گذار و مدیر کش است. بررسی آیتم حافظه پنهان دیسک و پر کردن پایگاه داده درون حافظه موتور با ابرداده حافظه پنهان از وظایف بارگذار کش است. با این کار، نمونه‌های NGINX برای کار با فایل‌هایی که قبلا روی دیسک ذخیره شده‌اند، در یک ساختار اختصاص‎یافته آماده می‌شوند. وظیفه مدیر کش، مدیریت انقضای کش و باطل‎ شدن آن است.

امنیت وب سرور Nginx

امنیت وب سرور Nginx

Nginx چندین امکانات امنیتی اضافی را به کاربرانش ارائه می‌دهد. یکی از این امکانات، محدود‎کردن نرخ است. بدین صورت که برای مشتریان واقعی، نرخ درخواست ورودی را به یک مقدار معمولی کاهش می‌دهد تا سرور در برابر حملات DDos محفوظ باشد.
همچنین، از محدودیت نرخ برای محافظت از سرور‌های بالادستی در برابر درخواست‌های زیاد کاربران، استفاده می‌شود.

علاوه بر این مورد، کاربران وب سرور Nginx می‌توانند با رد‎ کردن یا اجازه دادن دسترسی بر اساس آدرس IP مشتریان، از وقوع حملات DDoS جلوگیری کنند. دسترسی‌ها می‌توانند با استفاده از رمز عبور، پهنای باند یا نتیجه درخواست فرعی انجام شوند.

از طرف دیگر، Nginx با پشتیبانی از جدیدترین نسخه امنیت لایه ترانسپورت (TLS)، برای کاربران خود امکان رمزگذاری قابل اعتمادی برای داده‌های ارسال شده از طریق اینترنت را فراهم می‌کند.

شما می‌توانید برای دریافت ویژگی‌های امنیتی بیشتر، از نسخه پریمیوم NGINX Plus استفاده کنید.

مزایای Nginx

استفاده از Nginx مزایای بسیار زیادی دارد. برخی از مهم‌ترین مزایای وب سرور Nginx عبارتند از:

  • زمان انتظار برای بارگذاری وب‎سایت به طرز قابل توجهی کم است. با کمتر شدن زمان انتظار، تجربه کاربری سایت بهبود یافته و لازم نیست برای مدت‎زمان زیاد در وب‎سایت خود منتظر باشید.
  • Nginx مسیریابی ترافیک به سرورهای وب را بهبود می‎بخشد؛ به طوری که سرعت کلی افزایش می‎یابد و عملکرد بهتر می‎شود. این مورد نیز یکی از راهکارهای بهبود تجربه کاربری است.
  • یک لود بالانسر ارزان و قدرتمند است.
  • با قابلیت مقیاس‌پذیری و توانایی رسیدگی به درخواست‌های همزمان، از قطعی و کندی سایت جلوگیری می‌کند.
  • امکان ارتقای “در زمان اجرا” (on-the-fly) بدون خرابی یا قطعی را فراهم می‌کند.

کاربردهای Nginx

کاربردهای Nginx

وب سرور Nginx را می‌توانیم به صورت یکی از موارد زیر پیکربندی کنیم:

  • به عنوان یک وب سرور: به دلیل عملکرد و مقیاس‌پذیری آن رایج‌تر است.
  • به عنوان یک پروکسی معکوس: وب سرور Nginx با هدایت درخواست مشتری به سرور back-end این کار را انجام می‌دهد.
  • به عنوان یک لود بالانسر: به طور خودکار و بدون پیکربندی دستی، بار ترافیک شبکه شما را توزیع می‌کند.
  • یک دروازه API: برای مسیریابی درخواست، رسیدگی به موارد استثنا و مسیریابی درخواست مفید است.
  • به عنوان یک فایروال برای اپلیکیشن‌های وب: با فیلتر کردن درخواست‌های ورودی و خروجی شبکه روی سرور، از برنامه شما محافظت می‌کند.
  • به عنوان یک کش: به ذخیره داده‌های شما برای انجام درخواست‌های بعدی کمک می‌کند.
  • به عنوان پلتفرم K8s: به استقرار و مقیاس‌پذیری خودکار کمک کرده و برنامه‌های کانتینری را مدیریت می‌کند.
  • به عنوان یک پروکسی sidecar: مسیر ترافیک را به کانتینری و از کانتینری هدایت می‌کند.

نحوه نصب Nginx

پس از اینکه که متوجه شدید Nginx چیست و چه مزایا و کاربردهایی دارد، نوبت به نصب آن می‌رسد. ابتدا دستگاه لینوکس را باز کنید و با استفاده از دستورات زیر، بروزرسانی را اجرا کنید:

sudo apt-get update

سپس، این دستور را اجرا کنید:

sudo apt-get install nginx

در مرحله بعد، با استفاده از دستور زیر، فایروال خود را فعال کنید:

sudo ufw enable

برای تایید نصب NGINX، دستور زیر را اجرا کنید:

sudo ufw enable

nginx -v

اگر می‌خواهید بررسی کنید که NGINX در حال اجرا است یا خیر، دستور زیر را اجرا کنید:

sudo ufw status

پس از اجرای این دستور، باید موارد زیر را مشاهده کنید:

status: active

اگر می‌خواهید بررسی کنید که سرور NGINX به درستی کار می‌کند یا خیر، دستور زیر را اجرا کنید:

sudo systemctl status nginx

در صورتی ک همه چیز به درستی کار کنند، یک پیام موفقیت‎آمیز برایتان ظاهر می‌شود.

سوالات متداول

پرسش: آیا Nginx رایگان است؟

بله. با این حال، نسخه پیشرفته‌تر آن که با نام NGINX Plus شناخته می‌شود، پولی است و برای استفاده از آن، باید هزینه پرداخت کنید. برای نسخه پریمیوم وب سرور Nginx که دارای لود بالانسر، کش محتوا، web server، دروازه API و پروکسی microservices است، حدودا 2500 دلار در سال پرداخت می‌شود.

آیا Nginx می‌تواند به عنوان پروکسی وب استفاده شود؟

بله. Nginx می‌تواند به عنوان یک پروکسی معکوس برای پروتکل‌های مختلف مانند HTTP، IMAP، UDP، SMTP، POP3 و HTTPS عمل کند.

آیا Nginx برای وب‎سایت‌های با ترافیک بالا مناسب است؟

بله. اساسا Nginx برای حل مشکل C10K طراحی شده است. از این نظر، برای وب‎سایت‌های بزرگ با ترافیک بالا بسیار مناسب است.