راهاندازی یک سایت اینترنتی و مدیریت آن برای یک کسبوکار اینترنتی، سایت خبری و آموزشی و یا حتی یک وبلاگ شخصی و به هر منظوری که باشد شما را وارد دنیایی خواهد کرد که مفاهیم پیچیده زیادی در آن وجود دارند. این مفاهیم میتواند کمی در ابتدای امر گیجکننده به نظر برسد. خصوصا زمانی که شما به دنبال سرویسهایی که مربوط به میزبانی و راهاندزای سایت است میباشید. یکی از مهمترین مواردی که ممکن است در مسیر خود برای انتخاب یک هاست با آن مواجه شوید، وبسروری است که به شما سرویسدهی میکند. انواع مختلفی از وبسرورها وجود دارد که میتوان بسته به نیاز از آنها استفاده کرد و هر کدام از آنها ویژگیهای مختلفی دارند. در این مقاله با بررسی این موضوع که NginX چیست، یکی از این وبسرورها را به شما معرفی خواهیم کرد.
قبل از اینکه به بررسی دقیق و جزءبهجزء اینکه NginX چیست بپردازیم لازم است بدانیم که وبسرورها برای سایت ما چه کاری را انجام میدهند و اصلا این ویژگی در مورد چه چیزی صحبت میکند.
فهرست عناوین
مسئولیت وبسرورها چیست؟
وبسرور از آن دست المانهای اینترنتی به شمار میرود که برای اولینبار نام آن را بشنوید احتمال اینکه با سرورهایی که هاست روی آنها قرار گرفته و در دیتاسنترها هستند اشتباه شوند، وجود دارد. در صورتی که شما هم چنین تصوری دارید، باید گفت که این موضوع کاملا اشتباه است. هر چند وبسرور ما اهمیتی کمتر از این سرور ندارد اما کاربرد وبسرورها چیز دیگری است.
آیا میدانید وقتی که یک سایت اینترنتی کار میکند و در دسترس کاربران قرار میگیرد چه اتفاقی میافتد و چه چیزی در حال اجرا است که این سایت روی صفحهنمایش ما دیده می شود؟! این کار برای ما که پشت سیستم خود نشسته و راحت یک سایت را باز میکنیم، کاری به نظر ساده میرسد، اما باید گفت که در پس این کلیکهای ساده روندی پیچیده و طولانی با سرعت بسیار بالا در حال طی شدن میباشد.
وقتی ما آدرس سایت را وارد کرده و اینتر را میزنیم و یا روی دکمه GO در مرورگر خود کلیک کنیم، یک درخواست از سیستم ما خارج شده و در بستر اینترنت به سمت سرورها ارسال میشود. ابتدا با استفاده از DNS Serverها موقعیت سرور پیدا شده و بعد از پیدا شدن آن درخواست ما به سمت سروری که سایت روی آن قرار گرفته است حرکت خواهد کرد.
پس از رسیدن درخواست ما به سرور، ابتدا همهچیز در مورد اینکه آیا این درخواست یک درخواست معقول است که اجازه چنین کاری وجود دارد یا نه بررسی شده و در صورتی که دسترسی به صفحه موردنظر بلامانع باشد، سرور دادهها را از پایگاه داده استخراج کرده و برای ما ارسال میکند. این دادهها از بستر اینترنت عبور کرده و در سیستم ما بهصورتی که قابل درک باشد به ما نمایش داده خواهد شد.
این روند برای تمامی دسترسیها و دادههایی که در اینترنت در حال تبادل هستند اجرا میشود. اما در مورد این که وبسرور در کجای این بخش قرار دارد باید گفت که وبسرورها همان برنامههایی هستند که روی سرور اجرا شده و درخواستهای ورودی را دریافت و کنترل میکنند و به آنها پاسخ میدهند. وبسرورها برنامهای مجزا هستند که روی سیستم عامل سرور اجرا شده و پایگاه داده و فایلهای سایت در اختیار آنها است و به نوعی میتوان گفت اپراتوری هستند که از فایلهای بیجان سایت یک نمای پویا را برای ما میسازند که میتواند بسته به کاری که ما روی سایت انجام میدهیم، به ما نتیجه مورد انتظار را بدهد.
در واقع باید گفت که وبسرورها هستند که سایت را فعال نگه میدارند و یکی از اصلیترین برنامهها برای راهاندازی یک سایت و یا برنامههای تحت وب میباشند و این وبسرور است که ورودی سرور را برای درخواستهای جدید بررسی میکند. ازاینرو بازدهی وبسرور میتواند تعیینکننده بازدهی کل سایت باشد و در صورتی که وبسرور با برنامهای که میخواهد با آن کار کند سازگاری نداشته باشد، با مشکلات جدیای مواجه خواهیم شد و باید گفت که سایت نمیتواند بهصورتی که باید کار خود را ادامه دهد.
در صورتی که در مورد وبسرورهای معروف و محبوب یک جستجوی ساده را داشته باشیم، موارد متعدد و مختلفی را خواهیم دید که از مهمترین آنها میتوان به مواردی مانند آپاچی، لایت اسپید، انجین ایکس و وبسرور IIS (برای سرورهای ویندوزی) اشاره کرد. در این مقاله قصد داریم وبسرور NginX را با هم بررسی کنیم.
NginX چیست؟
تا اینجای کار کموبیش به این موضوع که وبسرور NginX چیست آشنا شدیم و در صورتی که بخواهیم یک تعریف دقیق ارائه دهیم باید بگوییم که NginX یک وبسرور برای بررسی درخواستهای وارد شده به سرور است که میتواند بهصورت بهینه به این درخواستها پاسخ داده و با توجه به کاربرد خوبی که از خود نشان داده است بهعنوان یکی از بهترین گزینهها برای استفاده در سایتهایی که صفحات ایستا دارند شناخته میشود.
بهطورکلی باید گفت که این وبسرور یکی از نرمافزارهای کاربردی پرسروصدا در وب میباشد که مدعی خیلی از عناوین برای بهترین بودن است و باید گفت که بیشتر آنها هم درست میباشد. در مورد این وبسرور که معمولا بهصورت NginX ،NGINX و در بعضی مواقع nginx هم نوشته میشود، باید گفت که کاربردهای زیادی مانند متعادلکننده بار روی سرور، پراکسی معکوس که برای تقسیم درخواستها بین چند سرور مورد استفاده قرار میگیرد، پراکسی ایمیل که میتواند ایمیلها را به سرورها فوروارد کند و همینطور کش کردن صفحات وب را روی سرورها پیادهسازی میکند.
این وبسرور برای اولین بار در سال 2004 ارائه شد و ارائهکننده آن یک برنامهنویس روس به نام ایگور ولادیمیرویچ سیسوف میباشد که در قزاقستان متولد شد و بعد از اتمام تحصیلات خود در سال 1994 شرکت انجینایکس را در مسکو راهاندازی کرد که به ارائه خدمات نرمافزاری مشغول بود. همینطور که ملاحظه میکنید، دستیابی به این وبسرور قدرتمند برای این شرکت ده سالی زمان برده است و البته باید گفت که تجربه ده ساله این شرکت در برنامههای تحت شبکه و سرویسهای مربوط به آن باعث شده است که این وبسرور از یک استخوانبندی درستوحسابی بهرهمند باشد.
در مورد استفاده از این وبسرور باید گفت که این وبسرور در واقع یک محصول رایگان و اوپنسورس است که میتوانید بهراحتی از آن استفاده کنید، البته در سال 2019 یک نسخه تجاری و غیررایگان از آن با ویژگیهای حرفهایتر و کاملتر به نام انجینایکسپلاس منتشر شد که ویژگیهای بهتری را ارائه میکند اما انجینایکس رایگان هنوز هم یکی از یکهتازهای بازار نرمافزارهای شبکه میباشد.
در مورد اینکه جریان عنوان دومین وبسرور پراستفاده در NginX چیست باید گفت که این موضوع در سال ۲۰۱۶ عنوان شد و این وبسرور توانست با دستیابی به 18 درصد استفاده در بین وبسرورهای مختلف به این عنوان دست پیدا کند. البته باید گفت که تا رده اول که وبسرور آپاچی آن را به نام خود ثبت کرده است و مدت زیادی از آن میگذرد راه دور و درازی را در پیش دارد. همینطور رقیب دیگری که در فاصله نزدیکی از NginX در حال حرکت است نیز ممکن است هر لحظه به آن برسد. مهمترین رقیب NginX وبسرور لایت اسپید است.
لایت اسپید و انجینایکس در عین شباهت تفاوتهای زیادی با هم دارند و باید گفت که کاربردهای آنها نیز به نوعی متفاوت میباشد. در صورتی که نیاز به اطلاعات بیشتری در این رابطه دارید میتوانید سری به مقاله مقایسه انجین ایکس و لایت اسپید بزنید تا با این موارد بیشتر آشنا شوید.
نقطه شروع NginX چیست؟
اگر بخواهیم بگوییم که نقطه شروع به کار NginX چیست میتوانیم سال 2004 را برای این موضوع معرفی کنیم. در واقع NginX یک وبسرور منبعباز وب است که از سوی یک مهندس نرمافزار روس نوشته شد. از زمان آغاز به کار آن، این سرور وب روی بهرهوری بالا، همزمانی بالا و همچنین استفاده کمتر از حافظه تمرکز داشت. قابلیتهای بیشتری که روی کارکرد آن تاثیر میگذاشت مانند توازن در بارگذاری، حافظه نهان، کنترل دسترسی و پهنای باند و قابلیت یکپارچهسازی موثر با برنامههای کاربردی فراوان، از انجینایکس یک گزینه خوب برای معماران وبسایتهای نوین ساخت. اکنون این سرور وب در جایگاه دوم محبوبترین سرورهای منبعباز وب در اینترنت قرار دارد.
علت رشد سعودی NginX چیست؟
این روزها اینترنت آنقدر گسترده شده است که در دهه گذشته پیشبینی آن غیرممکن بود. تحولی عظیم از HTMLهای ساده که متنهای قابل کلیک ارائه میکردند و بر پایه NCSA و روی سرورهای وب آپاچی بودند تا میانگیرهای ارتباطی که همواره برقرار هستند و از سوی بیش از دو میلیارد کاربر در سراسر جهان مورد استفاده قرار میگیرند. با افزایش تعداد کامپیوترها، دستگاههای موبایل و تبلتهایی که همواره متصل هستند، چشمانداز اینترنت به سرعت در حال تغییر است. جزئیات سرویسهای آنلاین بسیار بیشتر شده و به سمت دسترسی به اطلاعات و سرگرمیهای برخط حرکت میکنند. بنابراین وبسایتها در زمان حال بسیار پیچیدهتر از قبل شدهاند و عموما به مهندسی بیشتری برای پیشرفت و مقیاسپذیری نیاز دارند. NginX یکی از وبسرورهایی بود که تمرکز خود را روی این قضیه معطوف کرد.
همواره یکی از بزرگترین چالشهای یک معمار وبسایت، همزمانی درخواستها بوده است. از ابتدای به وجود آمدن سرویسهای وب، تعداد درخواستهای همزمان در حال رشد است. برای یک وبسایت محبوب اصلا غیرمعمول نیست که بتواند به صدها هزار یا حتی میلیونها کاربر بهطور همزمان سرویس دهد. در دهه گذشته علت اصلی همزمانی اتصالهای کند بود (کاربرانی با ارتباطات تماسی یا (Dial-upاما امروزه افزایش همزمانی علت دیگری دارد؛ ترکیبی از کاربران موبایل و معماریهای جدیدتر برنامههای کاربردی که معمولا بر پایه نگه داشتن ارتباطی پایدار هستند و به کاربران اجازه میدهند با اخبار و اطلاعاتی که از طریق دوستان خود دریافت میکنند، بهروز شوند. عامل مهم دیگری که به افزایش همزمانی کمک میکند، تغییر رفتار مرورگرهای نوین است؛ اینگونه مرورگرها برای بالا بردن سرعت بارگذاری، چهار یا شش اتصال همزمان را با یک وبسایت برقرار میکنند.
نقش NginX در فراهم کردن همزمانی
برای نشان دادن مشکلی که برای ارتباط با اتصالهای کند به وجود میآید، یک وبسرور مبتنی بر آپاچی را در نظر بگیرید که پاسخ نسبتا کوتاه صد کیلوبایتی (یک صفحه وب با متن یا یک تصویر) ارائه میکند. بارگذاری این صفحه میتواند ظرف کسری از ثانیه انجام شود اما برای کاربری با پهنای باند ۸۰ کیلوبایت بارگذاری این صفحه ده ثانیه طول خواهد کشید. پس این سرور وب با سرعت نسبتا زیادی میتواند صدکیلوبایت محتوا را گرفته، سپس برای ده ثانیه بهکندی آن محتوا را قبل از آزادسازی اتصال به کاربر بفرستد. حال تصور کنید شما هزار کاربر دارید که بهطور همزمان متصل هستند و محتوای یکسانی را درخواست کردهاند. اگر تنها یک مگابایت حافظه اضافی برای هر کاربر تخصیص یابد، تقریبا یک گیگابایت حافظه برای ارائه سرویس به تنها هزار کاربر با درخواست صد کیلوبایت محتوا نیاز است. یک سرور وب معمولی که بر پایه آپاچی باشد، باید بیش از یک مگابایت حافظه اضافی برای هر اتصال تخصیص دهد. اگرچه شرایط ارسال محتوا برای یک اتصال کند، میتواند بهوسیله افزایش اندازه بافرهای سوکت کرنل سیستم عامل بهبود یابد، ولی این کار یک راهحل کلی نیست و میتواند اثرات جانبی زیادی در پی داشته باشد.
با وجود اتصالهای مداوم و پایدار، مشکل کنترل همزمانی بیش از پیش نمایان میشود زیرا برای جلوگیری از تاخیر به وجود آمده به علت سازماندهی اتصالهای جدید HTTP، ارتباط کاربران نباید قطع شود و برای هر کاربر متصل، میزان خاصی از حافظه به وسیله سرور وب تخصیص پیدا میکند.
در نتیجه برای کنترل حجم کاری افزوده شده مرتبط با افزایش مخاطبان و افزایش تعداد کاربران همزمان، یک وبسایت باید بر پایه تعدادی از بلاکهای موثر باشد. هر چند بخشهای دیگر مانند سختافزار، ظرفیت شبکه، نرمافزار و معماری ذخیره دادهها نیز مهم هستند، اما نرمافزار وبسرور است که اتصالهای کاربران را تائید و پردازش میکند، بنابراین سرور وب باید بتواند بهصورت غیرخطی و بر اساس افزایش تعداد درخواستها در هر ثانیه و اتصالهای همزمان تغییر کند. احتمالا تا اینجای کار متوجه شده باشید که علت روند رشد بالای NginX چیست و چرا این اتفاق افتاده است. NginX توانست نیازهایی را که مبتنی بر این همزمانی بود بهخوبی پشت سر بگذارد و به آنها پاسخگو باشد.
مزایای NginX چیست؟
تا اینجای کار بهصورت کامل با این وبسرور و کاری که برای ما انجام میدهد آشنا شدهایم، اما در صورتی که بخواهیم بهصورت کامل و تخصصی بگوییم که در کار کردن با این وبسرور چه مزیتهایی در اختیار ما خواهد بود، میتوانیم یک فهرست بلند را از موارد مختلف پیدا کنیم که مهمترین آنها را در ادامه با هم بررسی خواهیم کرد:
سرعت بالا
این وبسرور میتواند با سرعتی بیش از 2.5 برابر بیشتر از وبسرور آپاچی و منابع یکسان به درخواستهای وارد شده پاسخ دهد. یکی از دلایلی هم که توانسته است تا این اندازه بالا بیاید همین موضوع بوده است و در صورتی که بخواهیم معیار سرعت را بررسی کنیم، باید گفت که این وبسرور یکی از بهترین گزینهها برای ما میباشد.
همزمانی در پاسخ به درخواستها
یکی دیگر از موارد مهم همزمانی پاسخ به درخواستها است که NginX توانسته است از پس آن بهخوبی بر بیاید، این مورد به این معنی است که وقتی درخواستی وارد این وبسرور میشود بهصورت کاملا مدیریت شده از نظر زمانبندی درخواست به آنها پاسخ داده خواهد شد و از بابت کنترلهایی که میتواند ترتیبهای مختلفی داشته باشد به مشکل بر نمیخورد.
لود بالانس
یکی دیگر از کاربردهایی که در خیلی از موارد انجینایکس تنها به این دلیل بهکارگرفته میشود، وضعیت لود بالانس است. در خیلی از مواقع درخواستهایی که بهصورت یکباره به وبسرور وارد میشود و سرور قصد اجرای آنها را دارد میتواند دردسرهای اساسی و بزرگی را برای سایت و یا برنامه تحت وب ایجاد کند که در پی آنها کاربران با ارورهای خانواده 500 مواجه میشوند که تداخلهای سمت سرور بهحساب میآید. یکی از کارهایی که میتواند از این موضوع جلوگیری کند این است که درخواستهایی که به یکباره وارد سرور میشود بهصورت بلافاصله اجرا نشده و این درخواستها با یک ریتم منظم و پردازههای مرتب شده وارد سرور شوند تا از مشکل جلوگیری شود.
لود بالانس یکی از موارد مهمی است که در مورد NginX باید گفت بهصورت کاملا اصولی و کامل اجرا شده و میتواند یک گزینه بسیار عالی برای این موضوع باشد.
انعطافپذیری برای فایلهای ایستا و پویا
یکی از مشکلاتی که عموما در وبسرور ایجاد میشود این است که وبسرورها با فایلهای سایتها به تداخل میخورند. در این رابطه باید گفت که انجینایکس کاربرد خوبی را در این زمینه دارد و میتواند بهخوبی با فایلهای ایستا و پویا کنار بیاید، خصوصا فایلهای ایستا که یکی از اصلیترین کاربردهای این وبسرور میباشد.
البته باید گفت که در مورد فایلهای پویایی که با زبان برنامهنویسی PHP نوشته شده باشند، ممکن است تداخلهایی را داشته باشد. بهطور مثال در استفاده بهعنوان وبسرور در سیستم مدیریت محتوای وردپرس ممکن است کموبیش با تداخلهای مختلفی مواجه شویم.
بازدهی فوقالعاده در کار با ایمیلها
از آنجا که این وبسرور با فایلهای کوچک بهخوبی کار میکند و سرعت کارکرد آن هم بالا است از بهترین گزینههایی است که میتواند روی سیستمهای ایمیل قرار بگیرد و درخواستها را بهخوبی مدیریت کند. با استفاده از NginX میتوان مطمئن بود که میل سروری که میخواهیم با آن کار کنیم در بالاترین حالت خود قرار دارد و ارسال موفق ایمیلها و دریافتهای صحیح بهخوبی انجام خواهد شد. همینطور با استفاده از این سرور ارسال ایمیلهای مشکوک و ناقص کمتر شده و احتمال این که سرور ما بهعنوان یک ارسالکننده اسپم شناخته شود، بسیار پایین خواهد آمد.
عملکرد خوب در استریمینگ
سرویسهای استریمینگ مانند تلویزیونهای اینترنتی و یا برنامههایی که بهصورت استریم محتوای کاربران را منتشر میکنند رشد بسیار چشمگیری داشته است و یکی از عناصر اصلیای که میتواند کیفیت این سرویسها را تضمین کند، وبسرور NginX خواهد بود که به شما این امکان را خواهد داد که یک ارسال بدون وقفه را داشته باشید. در واقع ایجاد نقص در ارسال این سرویسها میتواند به معنی یک فاجعه و قطعی سراسری باشد اما در صورتی که از وبسرور NginX برای این کار استفاده شود مشکلاتی از این دست برای شما وجود نخواهد داشت.
مواردی که تا اینجا با هم بررسی کردیم ویژگیهای اصلیای است که میتوان آنها را در پاسخ به سوال مزایای NginX چیست معرفی کرد اما باید گفت که علاوه بر این موارد گزینههای دیگر نیز وجود دارند که میتوانیم آنها را بهصورت جزئی معرفی کنیم که عموما به موارد کاری عادی NginX معطوف میشوند. در ادامه این بخشها را نیز با هم بررسی خواهیم کرد.
دیگر فواید nginx
کنترل همزمانی بالا با بهرهوری و تاثیرپذیری بالا از فواید مهم بهکارگیری انجینایکس بوده است، ولی این سرور وب، فواید جالب دیگری نیز دارد. در چند سال گذشته معماریهای وب، ایده تجزیه و جداسازی زیرساخت نرمافزاریشان از سرور وب را در پیش گرفتهاند؛ همانند آنچه قبلا در وبسایتهای مبتنی بر Linux، MySQL، PHP،Python یا Perl، وجود داشت.
اگر بخواهیم بگوییم که در بین وبسرورهای مختلف، علت مناسب بودن NginX چیست، میتوانیم بگوییم که قابلیتهای کلیدی مورد نیاز برای کنترل همزمانی، پردازش تاخیر، لایه امن سوکتها یا همان SSL، محتوای ایستا، فشردهسازی و ذخیره در حافظه نهان، از بین بردن اتصالها و درخواستهای غیرضروری و حتی جریان HTTP رسانه از لایه کاربردی به لایه موثرتر سرور وب را ارائه میکند. همچنین امکان یکپارچه سازی مستقیم با راهحلهای بدون SQL یا NoSQL مانند memcached/Redis را برای بالا بردن کارایی هنگام ارائه سرویس به تعداد زیادی از کاربران همزمان فراهم میسازد.
شرایط بهکارگیری NginX چیست؟
با وجود کیتها و زبانهای برنامهنویسی جدید توسعه، شرکتهای بیشتری اقدام به تغییر نحوه توسعه و بهکارگیری برنامههای کاربردی خود کردند و انجینایکس به یکی از اصلیترین اجزای این تغییرات تبدیل شد که توانست به بسیاری از شرکتها در جهت توسعه سریع سرویسهای وبشان کمک کند. خیلی از شرکتها و کسبوکارهایی که با شرایط ساختاری NginX سازگار هستند در حال استفاده از این وبسرور هستند و شما نیز میتوانید بهراحتی از آن استفاده کنید.
ساختار NginX چیست؟
اولین خطهای انجین ایکس در سال ۲۰۰۲ نوشته شد و سال ۲۰۰۴ به عرضه عمومی رسید. تعداد کاربران انجینایکس در حال افزایش است که این مساله باعث افزایش ایدههای مشارکتی، خطاهای گزارش شده، پیشنهادها و نظارتها شده است. اساس کد انجینایکس مختص به خودش است که بهصورت کامل و از ابتدا با زبان برنامهنویسی C نوشته شده است. انجینایکس به بسیاری از معماریها و سیستم عاملها مانند لینوکس، ویندوز،Mac OS FreeBSD و نفوذ کرده است. این سرور وب، با داشتن کتابخانههای خود از ماژولهای استاندارد کتابخانهای C استفاده زیادی نمیکند.
اگرچه انجینایکس در محیط ویندوز هم کار میکند، اما نسخه ویندوزی آن بیشتر نمایش است تا سرویس وب مناسب برای ویندوز. محدودیتهای خاصی که در انجینایکس و معماری کرنل ویندوز وجود دارد، موجب میشود انجینایکس در همه حالات بهخوبی کار نکند. مشکلات شناختهشده نسخه ویندوزی انجینایکس مواردی چون پشتیبانی از تعداد کمتری اتصالهای همزمان، بهرهوری پایینتر، ذخیره نکردن در حافظه نهان و نبود سیاستهای لازم برای مدیریت پهنای باند است.
نتیجهگیری
در این مقاله در مورد اینکه NginX چیست و چه کاری را برای ما انجام خواهد داد، مزایای آن چیست و از چه قابلیتهایی پشتیبانی میکند، موارد مربوط به همزمانی و اینکه چرا NginX به یکی از محبوبترین وبسرورهای جهان تبدیل شده است، با هم صحبت کردیم. بهطورکلی اگر میخواهید یک وبسرور ایدهآل را برای خود انتخاب کنید، NginX گزینهای مناسب خواهد بود. البته مشکلاتی در کارکرد با ویندوز وجود دارد که قابل رفع بوده و خود مایکروسافت نیز در حال حاضر از این وبسرور استفاده میکند. نکتهی حائز اهمیت در استفاده از NginX این است که این وبسرور برای وردپرس مناسب نیست و میتواند با افزونههای شما تداخل ایجاد کند، پس در صورتی که میخواهید یک سایت وردپرسی خوب و روان داشته باشید لایت اسپید برای شما گزینهای بهتر خواهد بود.