NGINX چیست در این مقاله با شما هستیم با نحوه آشنایی با وب سرور محبوب ان جی نیکس پس تا انتهای این مطلب کاربردی و مهم ما را همراهی کنید
جین ایکس (Nginx) نرمافزاری قدرتمند، رایگان و منبعباز است که بهدلیل سرعت و عملکرد بالا در پاسخگویی به درخواستها محبوبیت زیادی کسب کرده است. این نرمافزار علاوه بر کارکرد اصلی خود بهعنوان وبسرور، قابلیتهای متعددی مانند متعادلسازی بار (لود بالانسر)، پراکسی سرور (ذخیرهسازی محتوای ایستا و کاهش بار سرور اصلی) و پشتیبانی از پروتکلهای مختلف ایمیل از جمله HTTPS ،IMAP ،POP3 و SMTP را ارائه میدهد.
اگر بخواهید به طور خلاصه بدانید NGINX چیست، Nginx یک نرم افزار منبعباز (Open source) هست و به عنوان سرویسدهنده وب، پراکسی معکوس (reverse proxying)، سیستم کش (caching)، سیستم load balancing، و شبکه رسانهای (media streaming) و … استفاده میشود. همچنین برای این که بدانید nginx چیست باید در نظر بگیرید که Nginx به عنوان یک وبسرور با ارائه حداکثر کارایی (performance) و پایداری (stability) طراحی شده است. در این مقاله به شما خواهیم گفت انجین ایکس چیست و چگونه کار میکند و در ادامه با نحوه نصب آن روی ابونتو و سنتاواس آشنا خواهیم شد.
علاوه بر قابلیت HTTP سرور، NGINX میتواند به عنوان یک پروکسی سرور برای سرویس ایمیل (IMAP، POP3 و SMTP ) و نیز یک پروکسی معکوس و یا سیستم لودبالانس برای سرورهای HTTP، TCP و UDP عمل کند.
وب سرور چیست؟
از نظر سخت افزاری وب سرور، نوعی سرور میباشد که نرم افزارهای وب سرور و فایلهای component مربوط به وب سایت نظیر اسناد HTML ، تصاویر ، شیوه نامه های CSS و پرونده های جاوا اسکریپت و… را ذخیره میکند. وب سرور به اینترنت متصل می شود و از تبادل داده های فیزیکی با سایر دستگاههای متصل به وب پشتیبانی میکند
Nginx در مقایسه با Apache
Nginx با هدف صریح عملکرد بهتر از وب سرور آپاچی نوشته شده است . در حالی که در گذشته Nginx از Apache بهتر بود، از Apache 2.4 آنها عملکرد مشابهی را ارائه می دهند. این افزایش عملکرد سابق به قیمت کاهش انعطافپذیری، مانند توانایی لغو تنظیمات دسترسی به کل سیستم بر اساس فایل (Apache این کار را با یک فایل htaccess. انجام میدهد ، در حالی که Nginx چنین چیزی ندارد. ویژگی داخلی)
یکی از بهترین و معروفترین وب سرور ها برای میزبانی در یک یا چندین وبسایت می باشد؛ وب سرور NGINX به شما اجازه تغییرات خاص در لایه شبکه را خواهد داد، همچنین وظیفه هندل کردن درخواست ها در وبسایت را نیر برعهده میگیرد.
نجین ایکس (NGINX)، که به عنوان “انجین-اکس” تلفظ میشود، در ماه اکتبر سال ۲۰۰۴ به صورت رسمی منتشر شد. آیگور سیسوف، خالق این نرمافزار، پروژه خود را در سال ۲۰۰۲ به عنوان یک تلاش برای پاسخ به مشکل C10k آغاز کرد. مشکل C10k به چالش مدیریت ده هزار اتصال به صورت همزمان اشاره دارد.
امروزه، تعداد اتصالاتی که سرورهای وب باید مدیریت کنند حتی بیشتر شده است. به همین دلیل، انجین ایکس (NGINX) با معماری رویداد-محور و ناهمگام ارائه شده است. این ویژگی باعث میشود که انجین ایکس یکی از پایدارترین سرورها برای سرعت و قابلیت مقیاسپذیری باشد.
مزایای NGINX
استفاده از NGINX مزایای متعددی دارد، از جمله موارد زیر:
- زمان انتظار برای بارگذاری وب سایت را کاهش می دهد. لازم نیست نگران تاخیر زیاد در وب سایت خود باشید، بنابراین تجربه کاربری خوبی را ارائه می دهید.
- با مسیریابی ترافیک به سرورهای وب به گونه ای که سرعت کلی را افزایش می دهد، عملکرد را افزایش می دهد. این ویژگی تجربه مرور خوبی را برای کاربران شما فراهم می کند.
- به عنوان یک بار متعادل کننده ارزان و قوی عمل می کند.
- مقیاس پذیری و توانایی رسیدگی به درخواست های همزمان را ارائه می دهد.
- امکان ارتقاء در حین پرواز بدون خرابی را فراهم می کند.
محدودیت های NGINX
اگرچه NGINX مزایای زیادی دارد، اما محدودیتهایی نیز وجود دارد. سطح پایینی از پشتیبانی جامعه و مشارکت های توسعه دهندگان دارد که منجر به ویژگی ها و به روز رسانی های کمتری می شود. هم نگهداری و هم راه اندازی نیاز به دانش تخصصی دارند.
اگرچه استفاده از NGINX رایگان است، اما یک نسخه پولی به نام NGINX Plus، یک بار متعادل کننده همه کاره، کش محتوا، وب سرور، دروازه API و پروکسی میکروسرویس نیز دارد که هزینه آن ۲۵۰۰ دلار در سال است.
موارد استفاده
یک نمونه از NGINX را می توان به صورت یکی از موارد زیر پیکربندی کرد:
- یک وب سرور این به دلیل عملکرد و مقیاس پذیری آن رایج ترین است.
- یک سرور پروکسی معکوس. NGINX این کار را با هدایت درخواست مشتری به سرور back-end مناسب انجام می دهد.
- متعادل کننده بار این به طور خودکار بار ترافیک شبکه شما را بدون پیکربندی دستی توزیع می کند.
- یک دروازه API. این برای مسیریابی درخواست، احراز هویت و رسیدگی به استثنا مفید است.
- فایروال برای برنامه های کاربردی وب این با فیلتر کردن درخواستهای شبکه ورودی و خروجی روی سرور از برنامه شما محافظت میکند.
- یک کش NGINX به عنوان یک کش عمل می کند تا به ذخیره داده های شما برای درخواست های بعدی کمک کند.
- محافظت در برابر حملات انکار سرویس توزیع شده (DDoS).
- K8s. اینها استقرار و مقیاسبندی را خودکار میکنند و برنامههای کانتینری را مدیریت میکنند.
- یک پروکسی سایدکار. این مسیر ترافیک را به و از کانتینری که در کنار آن قرار دارد هدایت می کند.
به دلیل اینکه انجین ایکس NGINX توانایی بینظیری در مدیریت تعداد زیادی اتصال و سرعت دارد، بسیاری از وب سایتهای پرترافیک از سرویس انجین ایکس استفاده میکنند. که برخی از این شرکتهای بزرگ شامل گوگل، نتفلیکس، ادوب، کلودفلر، وردپرس و بسیاری دیگر هستند.
قبلاً، افزودن ماژولهای شخص ثالث به Nginx نیازمند کامپایل مجدد برنامه از منبع با ماژولهایی بود که به صورت ایستا مرتبط هستند . این امر تا حدی در نسخه ۱.۹.۱۱ در فوریه ۲۰۱۶ با اضافه شدن بارگذاری ماژول پویا برطرف شد . با این حال، ماژول ها همچنان باید همزمان با Nginx کامپایل شوند، و همه ماژول ها با این سیستم سازگار نیستند. برخی از آنها به فرآیند پیوند استاتیک قدیمی تر نیاز دارند.
ویژگی ها
Nginx ممکن است برای ارائه محتوای وب ثابت یا به عنوان یک سرور پروکسی پیکربندی شود .
Nginx را میتوان برای ارائه محتوای پویا در شبکه با استفاده از FastCGI ، کنترلکنندههای SCGI برای اسکریپتها ، سرورهای برنامه WSGI یا ماژولهای Phusion Passenger استفاده کرد و میتواند به عنوان متعادلکننده بار نرمافزار عمل کند .
Nginx از یک رویکرد رویداد محور ناهمزمان ، به جای رشته ها، برای رسیدگی به درخواست ها استفاده می کند. معماری مدولار رویداد محور Nginx می تواند عملکرد قابل پیش بینی را تحت بارهای بالا ارائه دهد
سیستم عامل و پلتفرم تست شده
- FreeBSD 3 — ۱۲ / i386; FreeBSD 5 — ۱۲ / amd64; FreeBSD 11 / ppc; FreeBSD 12 / ppc64;
- لینوکس ۲.۲ — ۴ / i386؛ لینوکس ۲.۶ — ۵ / amd64؛ لینوکس ۳ — ۴ / armv6l، armv7l، aarch64، ppc64le؛ لینوکس ۴ – ۵ / s390x؛
- سولاریس ۹ / i386، sun4u؛ سولاریس ۱۰ / i386, amd64, sun4v; سولاریس ۱۱ / x86;
- AIX 7.1 / powerpc;
- HP-UX 11.31 / ia64;
- macOS / ppc، i386، x86_64؛
- ویندوز XP، ویندوز سرور ۲۰۰۳، ویندوز ۷، ویندوز ۱۰.
معماری و مقیاس پذیری
- یک استاد و چندین فرآیند کارگر. فرآیندهای کارگر تحت یک کاربر غیرمجاز اجرا می شوند.
- پیکربندی انعطاف پذیر ؛
- پیکربندی مجدد و ارتقاء یک فایل اجرایی بدون وقفه در خدمات مشتری؛
- پشتیبانی از kqueue (FreeBSD 4.1+)، epoll (Linux 2.6+)، /dev/poll (Solaris 7 11/99+)، پورت های رویداد (Solaris 10)، انتخاب و نظرسنجی.
- پشتیبانی از ویژگیهای مختلف kqueue از جمله EV_CLEAR، EV_DISABLE (برای غیرفعال کردن موقت رویدادها)، NOTE_LOWAT، EV_EOF، تعداد دادههای موجود، کدهای خطا.
- پشتیبانی از ویژگی های مختلف epoll از جمله EPOLLRDHUP (Linux 2.6.17+، glibc 2.8+) و EPOLLEXCLUSIVE (Linux 4.5+، glibc 2.24+).
- پشتیبانی sendfile (FreeBSD 3.1+، Linux 2.2+، macOS 10.5+)، sendfile64 (Linux 2.4.21+) و sendfilev (Solaris 8 7/01+).
- فایل AIO (FreeBSD 4.3+، Linux 2.6.22+)؛
- DIRECTION (FreeBSD 4.4+، Linux 2.4+، Solaris 2.6+، macOS)؛
- فیلترهای پذیرش (FreeBSD 4.1+، NetBSD 5.0+) و TCP_DEFER_ACCEPT (Linux 2.4+) پشتیبانی میکنند .
- ۱۰۰۰۰ اتصال غیرفعال HTTP در حدود ۲.۵ میلیون حافظه را اشغال می کند.
- عملیات کپی داده ها به حداقل می رسد.
ارائه کارآمد محتوای استاتیک
مدیریت بهینه فایل های استاتیک به ارائه یک تجربه کاربری رضایت بخش کمک می کند. یکی از نقاط قوت اصلی NGINX، تحویل کارآمد محتوای ثابت است که شامل HTML، CSS، فایلهای جاوا اسکریپت و تصاویر است.
سرور NGINX از طریق مسیریابی درخواست موثر به این کارایی دست می یابد . هنگامی که یک کاربر یک صفحه وب را درخواست می کند، NGINX به سرعت محتوای استاتیک لازم را پیدا کرده و ارائه می کند. همچنین می تواند چندین درخواست را به طور همزمان انجام دهد و حداکثر عملکرد را حتی در شرایط بار سنگین تضمین کند.
علاوه بر این، ویژگی هایی مانند نمایه سازی خودکار به طور قابل توجهی به این کارایی کمک می کند. نمایه سازی خودکار در NGINX امکان بازیابی و نمایش سریعتر محتوای ثابت را فراهم می کند و زمان پاسخ را تسریع می کند. این قابلیت به ویژه برای وب سایت هایی با فایل های استاتیک بزرگ مفید است.
نحوه نصب NGINX
در این آموزش، نحوه نصب NGINX را در لینوکس به شما نشان خواهیم داد. دستگاه لینوکس خود را باز کنید و با استفاده از دستور زیر یک به روز رسانی را اجرا کنید:
sudo apt-get update
بعد این دستور را اجرا کنید:
sudo apt-get install nginx
سپس فایروال خود را با موارد زیر فعال کنید:
sudo ufw enable
برای تأیید نصب NGINX، موارد زیر را اجرا کنید:
nginx -v
می توانید دستور زیر را اجرا کنید تا متوجه شوید که آیا NGINX در حال اجرا است یا خیر:
sudo ufw status
پس از اجرای این دستور باید موارد زیر را مشاهده کنید:
status: active
برای بررسی اینکه آیا سرور NGINX شما به خوبی کار می کند، موارد زیر را اجرا کنید:
sudo systemctl status nginx
اگر همه چیز به درستی کار کند، باید یک پیام موفقیت آمیز ببینید.
مشکلات رایج NGINX
برخی از مشکلات رایج NGINX شامل موارد زیر است:
- سرور NGINX بیش از حد انرژی CPU شما را مصرف می کند، حتی اگر ترافیک زیادی وجود نداشته باشد.
- کارگران NGINX به دلیل کمبود حافظه در سرور شما از کار می افتند. این به مصرف بیش از حد CPU و حافظه ناکافی مربوط می شود.
- خطاهای مهلت زمانی بالادستی مانند «۵۰۲ Bad Gateway». این معمولا زمانی اتفاق می افتد که یکی از سرورهای شما پاسخ نامعتبری از سرور دیگری دریافت کند. بارگذاری بیش از حد سرور نیز می تواند باعث آن شود. حل این مشکلات به کاربر نیاز دارد تا کوکی های کش و مرورگر را پاک کند، که می تواند تجربه ناخوشایندی باشد.
تعادل بار ترافیک وب در چندین سرور
NGINX به عنوان یک متعادل کننده بار کارآمد برجسته است و در توزیع ترافیک وب ورودی در چندین سرور مهارت دارد. با توزیع یکنواخت درخواستها، متعادلسازی بار NGINX تضمین میکند که هیچ سروری به گلوگاه تبدیل نمیشود، بهویژه در زمانهای اوج مصرف یا شرایط با تقاضای بالا.
مزایای استفاده از NGINX به عنوان متعادل کننده بار قابل توجه است.
در مرحله اول، در دسترس بودن وب سایت را بهبود می بخشد . با به اشتراک گذاشتن بار بین چندین سرور، NGINX خطر خرابی ناشی از بارگذاری بیش از حد یک سرور را به حداقل می رساند. اگر یکی از سرورها با مشکلاتی مواجه شود، بقیه می توانند به کار خود ادامه دهند و در نتیجه زمان کار وب سایت را حفظ کنند.
ثانیا، قابلیت های load-balancing NGINX بار هر سرور را کاهش می دهد . این کار باعث افزایش عملکرد وب سرورها و افزایش طول عمر آنها با جلوگیری از استفاده بیش از حد می شود. بنابراین، NGINX به حفظ یک محیط سرور متعادل و سالم کمک می کند، که برای اجرای برنامه های وب در مقیاس بزرگ بسیار مهم است.
تبریک می گوییم مطلب NGINX چیست به پایان رسید با مقالات بعدی ما را همراهی کنید!