در این مقاله میخواهیم با همدیگر به این سوال پاسخ دهیم که Nginx چیست و چه مزایا و کاربردهایی دارد. در ادامه، به نحوه نصب آن میپردازیم. Web server یکی از واحدهای اساسی اینترنت است. در واقع، Web serverها رایانههایی هستند که در زمان درخواست صفحات وب، آنها را به شما ارائه میدهند. هر Web server، دارای یک آدرس IP و نام دامنه است. برای تبدیل رایانه به Web server، باید یکی از نرمافزارهای Web server مانند Apache، Tornado، XAMPP، Caddy، 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، فرآیندهای اصلی میتوانند چندین فرآیند کارگر (worker) را کنترل کنند. با اینکه پردازش واقعی توسط کارگران انجام میشود، هر مستر (master) فرآیندهای کارگر را نگهداری میکند. از آنجایی که Nginx غیرهمزمان است، هر درخواست میتواند بدون مسدود کردن سایر درخواستها، توسط یک کارگر اجرا شود.
برخی از مهمترین و رایجترین ویژگیهای Nginx عبارتند از:
- پروکسی معکوس با کش؛
- IPv6؛
- لود بالانسر؛
- پشتیبانی از واسط دروازه مشترک (FastCGI) با کش؛
- وبسوکتها؛
- مدیریت فایلهای فهرست، فایلهای استاتیک و فهرستسازی خودکار؛
- گواهینامه TLS/SSL با SNI.
معماری Nginx
وب سرور Nginx با پیادهسازی مدلهای رویدادمحور، غیرمسدودکننده و ناهمزمان، از معماری کارگر-مستر استفاده میکند.
- هر کارگر، درخواستهای جدید را از یک سوکت گیرنده مشترک قبول میکند و حلقههای اجرای بسیار کارآمد را برای پردازش هزاران درخواست، درون هر کارگر اجرا میکند.
- مسترها با ایجاد، اتصال و عبور از سوکتها، پیکربندیها را میخوانند و تایید میکنند. همچنین، مدیریت شروع، پایان و نگهداری تعداد فرایندهای کارگر پیکربندیشده بر عهده مستر است. گره مستر میتواند بدون وقفه، مجددا فرایند کارگرها در سرویس را پیکربندی کند.
- کشهای پروکسی فرایندهای خاصی هستند. هر کش پروکسی دارای یک بارگذار و مدیر کش است. بررسی آیتم حافظه پنهان دیسک و پر کردن پایگاه داده درون حافظه موتور با ابرداده حافظه پنهان از وظایف بارگذار کش است. با این کار، نمونههای NGINX برای کار با فایلهایی که قبلا روی دیسک ذخیره شدهاند، در یک ساختار اختصاصیافته آماده میشوند. وظیفه مدیر کش، مدیریت انقضای کش و باطل شدن آن است.
امنیت وب سرور Nginx
Nginx چندین امکانات امنیتی اضافی را به کاربرانش ارائه میدهد. یکی از این امکانات، محدودکردن نرخ است. بدین صورت که برای مشتریان واقعی، نرخ درخواست ورودی را به یک مقدار معمولی کاهش میدهد تا سرور در برابر حملات DDos محفوظ باشد.
همچنین، از محدودیت نرخ برای محافظت از سرورهای بالادستی در برابر درخواستهای زیاد کاربران، استفاده میشود.
علاوه بر این مورد، کاربران وب سرور Nginx میتوانند با رد کردن یا اجازه دادن دسترسی بر اساس آدرس IP مشتریان، از وقوع حملات DDoS جلوگیری کنند. دسترسیها میتوانند با استفاده از رمز عبور، پهنای باند یا نتیجه درخواست فرعی انجام شوند.
از طرف دیگر، Nginx با پشتیبانی از جدیدترین نسخه امنیت لایه ترانسپورت (TLS)، برای کاربران خود امکان رمزگذاری قابل اعتمادی برای دادههای ارسال شده از طریق اینترنت را فراهم میکند.
شما میتوانید برای دریافت ویژگیهای امنیتی بیشتر، از نسخه پریمیوم NGINX Plus استفاده کنید.
مزایای Nginx
استفاده از Nginx مزایای بسیار زیادی دارد. برخی از مهمترین مزایای وب سرور Nginx عبارتند از:
- زمان انتظار برای بارگذاری وبسایت به طرز قابل توجهی کم است. با کمتر شدن زمان انتظار، تجربه کاربری سایت بهبود یافته و لازم نیست برای مدتزمان زیاد در وبسایت خود منتظر باشید.
- Nginx مسیریابی ترافیک به سرورهای وب را بهبود میبخشد؛ به طوری که سرعت کلی افزایش مییابد و عملکرد بهتر میشود. این مورد نیز یکی از راهکارهای بهبود تجربه کاربری است.
- یک لود بالانسر ارزان و قدرتمند است.
- با قابلیت مقیاسپذیری و توانایی رسیدگی به درخواستهای همزمان، از قطعی و کندی سایت جلوگیری میکند.
- امکان ارتقای “در زمان اجرا” (on-the-fly) بدون خرابی یا قطعی را فراهم میکند.
کاربردهای 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 طراحی شده است. از این نظر، برای وبسایتهای بزرگ با ترافیک بالا بسیار مناسب است.