NGINX چیست؟ بررسی کامل وب سرور NGINX
NGINX (انجین ایکس) را باید یک نرم افزار اپن سورس بدانیم که کاربردش بیشتر به عنوان سرویس دهنده وب، سیستم کش، پراکسی معکوس، شبکه رسانه ای، سیستم load babncing و… استفاده می شود.
در بیانی ساده میتوان گفت: یکی از بهترین و معروفترین وب سرور ها برای میزبانی در یک یا چندین وبسایت می باشد؛ وب سرور NGINX به شما اجازه تغییرات خاص در لایه شبکه را خواهد داد، همچنین وظیفه هندل کردن درخواست ها در وبسایت را نیر برعهده میگیرد.
این نرم افزار اپن سورس یک نوع وب سرور است که بالاترین میزان کارایی و پایداری را دارد. وظیفه وب سرور دریافت درخواست کاربر و پاسخ به آن درخواست است.
وب سرور شامل دو نوع سخت افزاری و نرم افزاری است که قسمت سخت افزار وب سرور داده های متنی، ویدویی، فایل های HTML،CSS، Javascript و در کل محتوا یک وبسایت را در بر می گیرد و بخش نرم افزاری در تعامل با Client است؛ هر دو بخش وب سرور به هم متصل بوده و به صورت یکپارچه کار می کنند. بهترین مثال برایClient، مرورگر کاربر مانند کروم، فایرفاکس، و … است.
NGINX علاوه بر قابلیت HTPP سرور که دارد، مانند یک پروکسی سرور برای سرویس های ایمیل) IMAP، POP3 و (SMTP و نیز به عنوان یک پروکسی معکوس با سیستم لود بالانس برای سرور های HTTP، TCP، UDP عمل می کند.
این ها تنها معرفی کوتاهی از NGINX بود که در ادامه در مورد نحوه نصب NGINX بر روی ابونتو و سنت اواس آشنا خواهیم شد.
وب سرور چیست؟
وب سرور یک کامپیوتر است مانند کامپیوتر خود شما که از دو بخش سخت افزاری و نرم افزاری ایجاد شده است و وظیفه تعامل با دیگر دستگاه های متصل به اینترنت را دارد؛ حتی می توان یک کامپیوتر شخصی را به عنوان وب سرور استفاده کرد اما این کار دور از منطق می باشد زیرا که وب سرور باید 24 ساعته به اینترنت و برق متصل بوده و همیشه در دسترس باشد. یا اینکه یک وب سرور باید یک آی پی استا (Static) داشته باشد و ارائه دهندگان اینترنت خانگی معمولا آی پی ایستا ارائه نمی دهند. بهترین محیط برای راه اندازی وب سرور دیتاسنتر می باشد که دارای استاندارد های خاص مخصوص این امر می باشد.
یک وب سرور با مرورگر از طریق پروتکل HTTP یا HTTPS ارتباط برقرار می کند. نحوه دریافت و ارسال اطلاع بین مرورگر و وب سرور به این گونه است که کاربر از طریق مرورگر درخواست خود را از طریق لینک (دامنه یا آی پی) مخصوصی که به وب سرور موردنظر متصل است ارسال می کند. وب سرور درخواست را بررسی می کند و اگر درخواست صحیح باشد، آن را پردازش کرده و نتیجه صحیح را برای مرورگر ارسال می کند.
نتیجه می تواند یک محتوا متنی، ویدیویی، محتوا سی اس اس، اچ تی ام ال یا حتی یک ارور باشد. وب سرور حتما باید نتیجه ای را برای کاربر ارسال کند و اگر محتوا درخواست شده موجود نبود ارور 404 برای کلاینت ارسال می کند.
وب سرور می تواند شامل محتوا ایستا (Static) یا پویا (Dynamic) یا ترکیبی از هر دو آنها باشد. ایجاد وبسایت با محتوا استاتیک بسیار ساده بوده ولی ایجاد وبسایت با محتوا پویا دانش بیشتری طلبیده و کار پیچیده تر و البته که هیجان انگیز تری می باشد.
وب سرور می تواند یک یا چندین سایت را با محتوا جداگانه میزبانی کند که به آن میزبانی مجازی (Virtual Hosting) گفته می شود. همچنین این قابلیت را دارد تا سطح استفاده از هر کاربر را محدود کند تا یک کاربر نتواند منابع سرور را به خود اسختصاص داده و مانع استفاده دیگر کاربران شود.
وب سرور NGINX چیست؟
NGINX یکی از معروفترین وب سرور ها برای میزبانی هرچه سریعتر یک وبسایت می باشد. NGINX در سال 2004 توسط Igor Sysoev عرضه شد و طبق آمار به طور میانگین 28 درصد از وبسایت ها در سال 2021 از این وب سرور برای میزبانی محتوا سایت استفاده می کنند. این وب سرور خدمات دیگری نیز ارائه می دهد.
- Load Balancing
برخی وبسایت ها روزانه توسط هزاران یا حتی میلیون کاربر استفاده می شوند و بازدید روزانه بسیار بالایی دارند. برای رسیدگی به این مقدار از کاربر و بازدید، یک سرور کافی نمی باشد و به همین دلیل از تعداد بسیار زیادی سرور به صورت همزمان استفاده می شود. در این بین وب سرور NGINX بین کاربران و این سرور ها قرار می گیرد و وظیفه هندل کردن درخواست ها را بر عهده می گیرد که به این موضوع لود بالانسینگ گفته می شود.
- Reverse Proxy
در پراکسی معکوس NGINX بین کاربران و سرور اصلی قرار می گیرد و در تامین امنیت سرور اصلی امنیت بسیاری بر قرار می کند. در نظر داشته باشید که تفاوت ظریف ولی مهمی بین پراکسی معکوس (Reverse Proxy) و فورواردینگ پراکسی (Forwarding Proxy) وجود دارد؛ پراکسی معکوس مقابل وب سرور قرار می گیرد و مطمئن می شود که هیچ کاربری مستقیما با سرور اصلی ارتباط برقرار نکند.
در طرف مقابل، فوروارد پراکسی در مقابل کاربر قرار می گیرد و مطمئن می شود که هیچ سروری به طور مستقیم با کاربر ارتباط برقرار نکند.
نحوه کار وب سرور NGINX
برای آن که بتوانید نحوه کار وب سرور NGINX را به خوبی متوجه شوید، باید ابتدا داستان بازدید کاربران از سایت را برایتان بگوییم.
زمانی که کاربری تصمیم می گیرد تا از سایت آسام سرور بازدید کند، ابتدا درخواست کتبی خودش را در قالب آدرس سایت و به وسیله مرورگرش، به سمع و بصر شبکه اعلام می کند. درخواست کاربری که شما باشید، دریافت می شود و توسط وب سروری که ما از آن استفاده می کنیم، پردازش می شود و بعد سایت برایتان به نمایش در می آید.
تا اینجا روشن بود؛ اما احتمالا می پرسید که خب نقش NGINX در این وسط چیست؟
بگذارید تا نقش NGINX را برایتان روشن کنیم. هر درخواستی که به دست وب سرور می رسد، باعث ایجاد یک thread جدید می شود و NGINX که یک سیستم thread poll دارد، که این سیستم از thread های ایجاد شده، نگهداری می کند زمانی که درخواست جدیدی به دست وب سرور برسد، یکی از thread هایی آزاد هستند، به آن درخواست رسیدگی می کنند و این همان نقطه قوت NGINX است!
مشکلاتی که ناشی از پردازش ها و thread های بی پایان هستند، از بین می روند و در زمان و هزینه شما صرفه جویی می شود. ساختار غیرمتقارن و رویداد محوری که در NGINX وجود دارد، هم سرعت را افزایش می دهد و امکان مدیریت کردن اتصال های بالا را فراهم می کند. در این فرایند، عملکردی که اتصال ها دارند، بر پاسخ دریافتی دیگری تاثیر نمی گذارد.
از نقش NGINX که بیان کردیم، به راحتی می توان متوجه شد که NGINX برای سایت هایی که بازدید بالایی دارند، بسیار مناسب هستند.
NGINX برای چه سایت هایی مناسب است؟
گفتیم که NGINX برای سایت هایی که بازدید بالایی دارند، مناسب است؛ اما این به معنی نیست که سایت هایی غیر از این هستند نمی توانند از NGINX استفاده کنند! این به این معنی است که به دلیل نحوه کار NGINX که بالا هم توضیح دادیم، بازدید کنندگان سایت های پر ترافیک، می توانند بدون مشکل از سایت استفاده کنند.
ذکر این نکته هم لازم است که NGINX یک وب سرور ساده نیست که تنها کاربردش ارائه محتوا به کاربران باشد! بلکه فراتر از این هاست.
شرکت هایی که از NGINX استفاده می کنند
شرکت هایی که در ادامه می گوییم، کمپانی های بزرگی هستند که NGINX را به عنوان وب سرور انتخاب کرده اند:
- گوگل
- مایکروسافت
- اپل
- فیس بوک
- توییتر
- لینکدین
- نتفیلیکس
- دراپباکس
- آی بی ام
- ادوبی
- و…
کاربرد هایی که NGINX دارد
در ابتدای مقاله به صورت اجمالی نگاهی به کاربردهای NGINX انداختیم، اما در این بخش می خواهیم به صورت مفصل تر و دقیق تر کاربر NGINX را بررسی کنیم که مطمئن هستیم دانستن کاربرد این نرم افزار اپن سورس دوست داشتنی، برای شما هیجان انگیز خواهد بود!
پراکسی سرور
ما پراکسی سرور را با نام معروف فیلترشکن می شناسیم؛ اما پراکسی سرور دقیقا چیست؟ زمانی که می خواهید در اینترنت چرخی بزنید، با سایت هایی که مواجه می شود که از خارج از کشور هستند و ما را تحریم کرده اند یا هم از داخل فیلتر شده اند، به همین دلیل نیاز است تا هویتتان را مخفی کنید و با یک آی پی کشور دیگر به گشت و گذار ادامه بدهید و دیگر هیچ دری به رویتان بسته نباشد.
پراکسی سرور این کار را برایتان میسر می کند؛ زمانی که از پراکسی استفاده می کنید، درخواست شما در گام اول توسط پراکسی دریافت می شود و بعد به مقصد می رسد. زمانی هم که پاسخی توسط مقصد داده می شود، ابتدا توسط پراکسی دریافت می شود و بعد به دست شما می رسد. مراحلی که برایتان توضیح دادیم، مراحل Forward Proxy است که در اختیار کاربران قرار دارد.
اما در این میان ما یک پراکسی داریم با عنوان Reverse Proxy که کاملا برعکس با پراکسی که صحبتش کردیم است. ساده تر بگوییم یعنی Reverse Proxy به جای آن که هویت کاربر را مخفی کند، هویت سرور را مخفی می کند!
زمانی که از NGINX استفاده می کنید، NGINX درست مانند یک Reverse Proxy در برابر سرور قرار می گیرد و درخواست های کاربران را بررسی می کند و به جای سرور وظیفه ارسال پاسخ را به دوش می کشد. این موضوع سبب می شود که به جز کاربران داخل سازمان، کسی به سرور دسترسی مستقیم نداشته باشد و دست هکر ها از سرور اصلی کوتاه می شود و باعث افزایش امنیت می شود.
Load Balancer
کاربردی دیگری که NGINX دارد، این است که به عنوان لود بلنسر ایفای نقش می کند؛ اما این Load Balancer چیست؟ Load Balancer به معنای تقسیم وظایف در بین منابع مختلف است که هدف نهایی از این کار افزایش دادن بهره وری از توانایی های سیستم است.
همانطور که از نامش پیداست، کار اصلی Load Balancer این است که یک تعادل بین منابع سیستم ایجاد کند. برای مثال ممکن است بخشی از منابع سیستم، زیر بار زیادی باشند در حالی که از منابع دیگر هیچ استفاده ای نمی شود! در این جا کاربرد Load Balancer برایمان روشن می شود.
Load Balancer سبب می شود که زمان پاسخ دهی بهینه شود و سرعت بیشتر شود.
HTTP Caching
زمانی که صفحاتی که محتوای ثابتی دارند، کپی می شوند، به این کار کشینگ می گوند.. هر کاربری که تصمیم می گیرد از یک صفحه مشابه بازدید کند، نیاز به بارگذاری مجدد نیست و از فایل کش که از صفحات با محتوای ثابت به دست آمده است، استفاده می کند و سرعت را تا حد زیادی افزایش می دهد.
سایت هایی که صفحات استاتیک یا صفحات با محتوای ثابت دارند، می توانند از NGINX استفاده کنند.
اما تنها کاربرد NGINX وب سرور و این مواردی که شمردیم نیست، بلکه توانایی های این نرم افزار بیش از تصور است که در ادامه برخی از کاربردهایش را بررسی می کنیم.
- پشتیبانی کردن از نسخه پروتکل اینترنت که IPV6 نام دارد
- امکان پشتیبانی کردن از پروتکل دودویی FastCGI به همراه کشینگ
- امکان پشتیبانی توسط NGINX از پروتکل ارتباطی WebSockets
- مدیریت کردن فایل های ثابت، مرتب کردن فایل ها با ایجاد فهرست برای فایل ها به صورت اتوماتیک
- امکان پشتیبانی از SSL/TLS بهوسیله SNI
تفاوت وب سرور nginx و آپاچی
آپاچی (Apache) را می توانیم بزرگ ترین رقیب NGINX به شمار بیاوریم و در این جا می خواهیم تفاوت هایی که بین این دو رقیب وجود دارد را بررسی کنیم؛ اما پیش از هرچیز باید یک بیوگرافی از آپاچی به شما بدهیم تا پیش زمینه برای بررسی تفاوت های NGINX و آپاچی داشته باشید.
آپاچی نیز یک وب سرور است که در سال 1995 میلادی که می شود سال 1374 خودمان، منتشر شده است. به محض آن که منتشر شد، موفق شد تا بیشترین سهم بازار وب سرور ها را برای خودش اختصاص دهد و توجه کمپانی های بزرگ را به خودش جلب کند.
بر اساس آماری که سایت Wpbeginner منتشر کرده است، در حدود 67 درصد از سایت ها از آپاچی استفاده می کنند. دلیلی که این وب سرور را محبوب کرده است، متن باز بودن آن است که دست شما را باز می گذارد؛ اما تنها این نیست و دلایل زیادی برای محبوبیت این وب سرور وجود دارد که در ادامه می گوییم.
- برای استفاده از آپاچی، نیازی به هیچگونه مجوز نیست
- ماهیت متن باز دارد و می توان به راحتی تغییرات دلخواه را اعمال کرد
- می توانید ماژول های مختلف و قابلیت های گوناگون به دلیل متن باز بودن آپاچی، به آن اضافه کنید
- عملکرد مناسبی دارد و از نظر امنیتی قابل اعتماد است
- می توانید به راحتی آن را نصب کنید
- تغییراتی که اعمال می کنید، بدون آن که نیازی به ریاستارت کردن داشته باشد، اعمال می شود
- فرقی نمی کند سیستم عامل شما چه باشد، ویندوز باشد یا لینوکس، در هر صورت آپاچی با آن سازگار خواهد بود.
وجود این همه مزیت یک جا کمی باورنکردنی است، پس کمی صداقت هم چاشنی محتوایمان کنیم و از معایب آپاچی هم بگوییم.
- گفتیم که آپاچی متن باز است و شما می توانید به راحتی تغییراتی که مدنظر دارید را اعمال کنید، اما این موضوع می تواند به ضرر شما هم باشد؛ اگر تغییراتی که اعمال می کنید، به درستی انجام نشود، امنیت سایت شما را با مخاطره می اندازد و به همین دلیل این نقطه قوت دوست داشتنی، می تواند تهدید به حساب بیاید.
- زمانی که پروتکل ها را شخصی سازی می کنید، باگ ایجاد می شود و همین سبب به وجود آمدن نیاز به رفع باگ می شود.
- آپاچی نیاز به توجه شما دارد و شما باید به صورت منظم و پیوسته، آن را آپدیت کنید.
- تمامی این ها را گفتیم تا با آپاچی آشنا شوید و دور هم غیبتش را بکنیم و با NGINX که قهرمان مقالهمان است، مقایسه کنیم.
- آپاچی سهم زیادی از بازار را به خودش اختصاص داده بود که با سهمی که NGINX داشت، فاصله زیادی بود که در حال حاضر این فاصله در حال کم شدن است.
آماری که سایت W3Techs منتشر کرده است، نشان می دهد که آپاچی سهم 33.9 درصدی و NGINX سهم 33.7 درصدی از بازار را گرفته اند. سایت W3Techs آمار جالب دیگری در مقیاس های مختلف منتشر کرده است که می تواند برایتان جالب باشد:
- از یک میلیون سایت برتری که وجود دارد، 33 درصد از NGINX استفاده می کنند و 29.2 درصد از آپاچی
- از 100هزار سایت برتر دنیا، 38.1 درصد از NGINX استفاده می کنند و 24 درصدشان از آپاچی
- از 10 هزار سایت برتر، 44.5 درصدشان از NGINX و 19.6 درصد از آپاچی استفاده می کنند.
- از 1000 سایت برتر نیز 47.1 درصد از آن ها از NGINX استفاده می کنند و تنها 19.1 درصدشان از آپاچی استفاده می کنند.
- آپاچی هرچند اندکی سهم بیشتر از NGINX دارد، اما انتخاب سایت های بزرگ و پربازدید، NGINX است.
نکته قابل ذکر در اینجا، عملکرد بسیار خوب در مقیاس پذیری است که از رشد یک سایت، به بهترین شکل پشتیبانی می کند.
چرا باید NGINX و Apache را باهم اجرا کنیم؟
گفتیم که NGINX و آپاچی وب سرور های قدرتمندی هستند و در حال رقابت با یکدیگر. اما اگر بخواهیم واقعیت را در مورد این دو وب سرور بیان کنیم، این است که این دوسرور مکمل یک دیگر هستند؛ آن هم به این دلیل است که نقطه ضعف یکی، نقطه قوت دیگریست.
برای مثال آپاچی ضعف هایی در حافظه دارد که در عوض NGINX در static files عالی است و برای اجرای محتوای پویا به php-fpm یا حداقل ماژول های مشابه، نیاز دارد.
شما می توانید NGINX و آپاچی را ترکیب کنید؛ مثلا از NGINX به عنوان static web server front و نیز پردازش آپاچی در بکاند، استفاده کنید و نتیجه فوق العاده ای بگیرید.
مزیت های وب سرور NGINX
NGINX به گونه ای طراحی شده که میزان رم کمتری مصرف کرده و همخوانی بالایی دارد. NGINX از یک رویکرد ناهمزمان و رویداد محور برای پاسخ به هر درخواست وب استفاده می کند. در بیشتر وب سرور ها برای هر درخواست یک پروسه جدید ایجاد می شود اما در NGINX برای جلوگیری از مصرف بیشتر رم، تعدادی پروسه در یک پروسه اصلی اجرا می گردند. NGINX با توجه ساختار API خود، قابل تعامل با هر اسکریپتی می باشد.
هنگام ایجاد تغییرات در لایه شبکه، راه اندازی مجدد آن اجتناب ناپذیر است؛ اما چه بر سر فرآیند های در حال اجرا در حین راه اندازی مجدد می آید؟ انجین ایکس یک تمایز عالی بین فرآیند های برنامه میزبانی شده و لایه شبکه را فراهم می کند. بنابراین شما می توانید هر تغییراتی که میخواهید را در لایه شبکه پیکربندی کنید و بدون ایجاد تداخل در میزبانی فرآیند ها، پیکربندی شبکه را راه اندازی مجدد کنید. خدمات NGINX بسیار متنوع بوده و پاسخگوی هرگونه نیاز برای میزبانی می باشد.
نحوه راه اندازی NGINX
نصب NGINX کار بسیار پیچیده ای نبوده و می توان با اجرای چند دستور کار نصب را انجام داد. انجین ایکس بر روی سیستم عامل های بر پایه RHEL مانند ردهت (Redhat) و سنتوس (CentOS)، بر روی دبین (Debian)، اوبونتو (Ubuntu) و حتی بر روی ویندوز قابل نصب می باشد. می توانید مراحل نصب را به طور کامل برای همه سیستم عامل ها در لینک زیر مشاهده کنید:
اگر می خواهید مزایای استفاده از وب سرور NGINX را چند برابر کنید، می توانید به صفحه خرید سرور مجازی (VPS) مراجعه کنید و پلن ایده آل خود را سفارش دهید.
نتیجه گیری در رابطه با وب سرور NGINX
به طور خلاصه در جواب به اینکه NGINX چیست باید گفت که یکی از بهترین و معروفترین وب سرور ها برای میزبانی فرآیند های استفاده شده در یک یا چندین وبسایت یا Application می باشد. NGINX با امکاناتی که ارائه می دهد، سرعت، امنیت، و قابلیت اطمینان بیشتری را برای وبسایت ها فراهم می کند. مقیاس استفاده از NGNX به این صورت است که در کوچکترین سرور مجازی تا قدرتمندترین سرور اختصاصی با چندین کلاستر قابل اجرا است.
سوالات متداول:
میتونیم از وب سرور آپاچی به وب سرور انجین ایکس سووییچ کنیم؟
بله میتونید سوویچ کنید
وب سرور آپاچی بهتره یا وب سرور انجین ایکس؟
وب سرور انچین ایکس رشد خیلی جزئی نسبت به وب سرور آپاچی داشته است و میتوان گفت تقریباً عملکرد یکسانی دراند اما ویژگی های متفاوتی را ارائه میدهند.
میشه آموزش نصبش رو هم بزارید داخل سایت؟ مرسی ازتون واقعا لازمه، من هر سایتی رفتم چرت و پرت نوشته بودن یا فقط برای یه سیستم عامل نوشته شده بود
با این حساب تقریباً تفاوت خاصی بین اپاچی و انجین ایکس در حالت عادی نیست 🤔🤔🤔
من که ازش استفاده میکنم و راضی ام در کل 👍