توسعههمه

انجین ایکس nginx چیست و چگونه کار می کند

nginx چیست ؟ یکی دیگر از سوالات پرتکرار کاربران! مدیران سایت‌هایی که از ترافیک بالایی برخوردارند همواره این دغدغه را دارند که چگونه و به‌ چه شکل می‌توانند سرعت لود سایت خود را افزایش دهند.که در چنین شرایطی یکی از مواردی که کمک می‌کند عملکرد سایت بهبود یابد این است که وب‌ سرور باید به اندازهٔ کافی قدرتمند باشد. در این مقاله قصد داریم تا به سوال انجین ایکس nginx چیست و چگونه کار می‌کند بپردازیم. در ادامه همراه ما باشید تا بیشتر با وب‌ سرور nginx آشنا شویم. همچنین جهت خرید سرور مجازی به پنل کاربری ابر آراز مراجعه کنید.

وب سرور چیست؟

قبل از آن که با مفهوم و کاربرد nginx (انجین ایکس) آشنا شویم بهتر است ابتدا بدانیم که وب‌سرور چیست. وب سرور نرم افزار یا سخت افزاریست که به برنامه‌ای تخصیص یافته که می‌تواند پاسخگوی درخواست های کاربران در شبکه جهانی وب (World Wide Web ) باشد. یک وب سرور می‌تواند حاوی یک یا چند وبسایت باشد. وب سرور درخواست های شبکه ای که از طریق HTTP یا پروتکل‌های دیگر باشند را پردازش می‌کند.

تاریخچه‌ی انجین ایکس

انجین ایکس در ماه اکتبر سال 2004 به صورت رسمی منتشر شد. سازنده این نرم افزار به نامIgor Sysoevاین پروژه را در سال 2002 طی تلاش برای حل مسئله C10k آغاز کرد. C10k یک چالش برای مدیریت 10 هزار اتصال همزمان است. امروزه، وب سرورها باید به اتصالات بیشتری رسیدگی کنند. پس به همین دلیل سرور nginx ساختاری رویدادگرا و ناهمزمان را ارائه می‌دهد. این ویژگی انجین ایکس را به یکی از قابل اعتماد ترین سرورها در بحث سرعت و مقیاس پذیری تبدیل کرده است.

به دلیل توانایی بالا در مدیریت اتصالات زیاد و سرعت آن، بسیاری از وب سایت های پر ترافیک و شلوغ از سرویس NGINX استفاده می کنند. برخی از غول های آنلاین شاملGoogle ، Netflix، Adobe، Cloudflare، WordPress.com و بسیاری دیگر می باشند.

تاریخچه NGINX
انجین ایکس در ماه اکتبر سال 2004 به صورت رسمی منتشر شد. سازنده این نرم افزار به نامIgor Sysoevاین پروژه را در سال 2002 طی تلاش برای حل مسئله C10k آغاز کرد.

انجین ایکس nginx چیست؟

nginx به زبان ساده یک نرم افزار معروف متن باز، کارآمد و رایگان وب سرور است. در نسخه اولیه ، آن به عنوان HTTP web serving به کار می رفت. امروزه، از آن به عنوان سرور معکوس(reverse server)،Http load balancer و پروکسی ایمیل برای IMAP، POPs و SMTP نیز استفاده می‌شود. انجین ایکس امروزه حدود ۲۸ تا ۰ ۳ % از تمامی دامنه های فعال را میزبانی می کند. Nginx به عنوان متعادل کننده بارگزاری یا load balancer ، وب سرور و HTTP cache معروف است. پروژه Nginx از همان ابتدای شکل گیری بر روی کارایی و performance بالا، و استفاده کمتر و بهینه شده از رم کار نمود.

انجین ایکس بر روی سیستم عامل های مختلفی از جمله Linux , OS X , Solaris , AIX , HP – UX و انواع BSD اجرا میشود.اساس توسعه Nginx را میتوان برای خدمت رسانی به محتوای صفحات پویای HTTP بر روی شبکه از طریق FastCGI , SCG برای اسکریپت ها و سرویس دهنده های نرم افزار WSG یا ماژول های Phusion و همچنین استفاده به عنوان load balancer معرفی نمود.

قابلیت‌های NGINX

از موارد مفید این سرور می توان کمترین حد استفاده از حافظه و همچنین کارایی همزمان و بالای آن را نام برد. از این وب سرور میتوان به عنوان پروکسی معکوس با وب سرور Apache استفاده کرد تا همزمان از قدرت آپاچی و سرعت انجین ایکس استفاده کرد.

تصور کنید که شما یک برنامه وب ایجاد کرده اید و اکنون در جستجوی سرور وب مناسب برای میزبانی از آن هستید. برنامه شما ممکن است شامل چندین فایل استاتیک،HTML ، CSS و JavaScript، یک سرویس API با پس زمینه یا حتی چندین سرویس وب باشد. ممکن است استفاده از Nginx همان چیزی باشد که به دنبال آن هستید و دلایل زیادی برای آن وجود دارد. NGINX یک سرور وب قدرتمند است و از معماری بدون موضوع و رویداد محور استفاده می کند که در صورت پیکربندی صحیح، آن را قادر می سازد تا از حداکثر توان خود استفاده کند. همچنین می‌تواند کارهای مهم دیگری مانند توازن بار و ذخیره سازی HTTP را انجام دهد یا به عنوان یک پروکسی معکوس مورد استفاده قرار گیرد.

کاربرد NGINX
NGINX یک سرور وب قدرتمند است و از معماری بدون موضوع و رویداد محور استفاده می کند که در صورت پیکربندی صحیح، آن را قادر می سازد تا از حداکثر توان خود استفاده کند

انجین ایکس چگونه کار می‌کند؟

قبل از صحبت بیشتر در مورد انجین ایکس بهتر است به نحوه کار وب سرورها بپردازیم. هنگامی که شما برای باز کردن صفحه ای درخواست (request) می دهید، مرورگر یا browser با سرور وب سایت ارتباط برقرار می کند. سپس سرور به دنبال فایل های درخواست شده در صفحه می گردد و آن را برای مرورگر ارسال می کند. این نوع درخواست ساده ترین نوع request می باشد.

مثال فوق همچنین به عنوان یک نمونه تک رشته ای نیز به حساب می آید. وب سرورهای قدیمی برای هر درخواست یک تک رشته ایجاد می کنند، ولی NGINX اینگونه عمل نمی کند. همان طور که پیش تر به آن اشاره شد NGINX به صورت رویدادگرا و ناهمزمان عمل می کند. یعنی رشته های مشابه به وسیله ی یک پروسه کارگر (worker process) مدیریت می شوند. و هر پروسه کارگر شامل واحدهای کوچکتری به نام ارتباطات کارگر(worker connections) می شود.

سپس کل این واحد وظیفه مدیریت رشته های درخواستی کاربران را بر عهده دارد. ارتباطات کارگر درخواست ها را به پروسه کارگر تحویل می دهند که همچنین به پروسه مستر نیز ارسال می شود. در آخر پروسه مستر نتایج نهایی را ارائه می دهد.

این پروسه به نظر آسان می آید، اما یک ارتباط کارگر می تواند تا 1024 درخواست مشابه را مدیریت کند. به همین دلیل NGINX می تواند به هزاران request بدون هیچ مشکلی رسیدگی کند. بنابراین NGINX برای وب سایت های شلوغی مثل e-commerce، search engines و cloud storage بسیار مناسب است.

پشتیبانی NGINX

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

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

متن سرور

متن سرور، یک سرور مجازی خاص را برای رسیدگی به درخواست های مشتری شما تعریف می‌کند. می توانید چندین بلوک سرور داشته باشید و NGINX بر اساس بخشنامه listen و server_name بین آنها انتخاب خواهد کرد. در داخل بلوک سرور، چندین زمینه موقعیت مکانی را تعریف می کنیم که برای تصمیم گیری در مورد نحوه رسیدگی به درخواست های مشتری تعریف می شوند. هرگاه درخواستی وارد شود، NGINX سعی خواهد کرد URI خود را با یکی از آن تعاریف موقعیت مکانی مطابقت دهد و مطابق با آن رفتار کند. بسیاری از دستورالعمل های مهم وجود دارد که می تواند در متن موقعیت مکانی مورد استفاده قرار گیرد، مانند:

1. try_files: سعی خواهد کرد که یک پرونده استاتیک موجود در زیر پوشه را که به راهنمای root اشاره دارد، ارائه دهد.
2. proxy_pass: درخواست را به سرور پروکسی مشخصی ارسال می کند.
3. Rewrite: در واقع URI ورودی را بر اساس یک عبارت معمولی بازنویسی می کند تا یک بلوک موقعیت مکانی دیگر بتواند آن را اداره کند.

روش‌های نصب NGINX

دو روش برای نصب NGINX وجود دارد، می‌توانید با استفاده از یک باینری از پیش ساخته شده، یا ساخت از منبع، آن را نصب کنید. روش اول بسیار ساده و سریعتر است، اما ساختن آن از منبع، امکان گنجاندن ماژول های شخص ثالث مختلف را فراهم می آورد که NGINX را بسیار قدرتمندتر می کند. همچنین این امکان را به ما می دهد تا متناسب با نیاز برنامه، آن را سفارشی کنیم.

پیکربندی انجین ایکس چگونه است؟

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

1. Working_processes:

این تنظیم تعداد فرآیندهای کارگر را که NGINX از آنها استفاده خواهد کرد، تعریف می کند. از آنجا که NGINX تک رشته ای است، معمولا این تعداد باید برابر با تعداد هسته های CPU باشد.

2. Working_connention:

این مورد تعداد حداکثر اتصالات همزمان برای هر فرآیند کارگر است و به کارگر ما می گوید که چگونه می توان به بسیاری از افراد به صورت همزمان توسط NGINX خدمات ارائه داد. هرچه این متغیر بزرگتر باشد، کاربران NGINX همزمان می توانند خدمات بیشتری داشته باشند.

3. Access_log & error_log:

این پرونده هایی هستند که NGINX برای ثبت هرگونه خطا و تلاش برای دسترسی از آنها استفاده خواهد کرد. این لیست های مربوط، به طور کلی برای اشکال زدایی و عیب یابی بررسی می شوند.

4. Gzip:

این تنظیمات مربوط به فشرده سازی GZIP از پاسخ های NGINX است. فعال کردن این مورد به همراه زیر مجموعه های مختلفی که دارد، باعث ارتقاء عملکرد بسیار بزرگی خواهد شد. از زیر تنظیمات GZIP باید به gzip_comp_level که سطح فشرده سازی نامی‌ده می‌شود و از ۱ تا ۱۰ متغیر است دقت کنید. به طور کلی، این مقدار نباید بالاتر از ۶ باشد. هر چه این عدد بزرگتر باشد به همان نسبت، به استفاده CPU بیشتری احتیاج دارد.

ویژگی های وب سرور NGINX چیست؟

● قابلیت Fault tolerance
● قابلیت Bandwidth throttling
● باز نویسی URL یا URL rewriting
● پردازش داده های XSLT
● پشتیبانی از TLS/SSL
● سازگار با IPv6
● پشتیبانی از پروتکل SPDY
● قابلیت Load balancing
● احراز هویت با استفاده از سرور HTTP خارجی
● پشتیبانی از STARTTL ها

انجین ایکس

Nginx بهتر است یا apache ؟

در پاسخ به سوال Nginx بهتر است یا apache ؟ آپاچی در کنار وب سرورهای معروف، از اصلی ترین رقبای Nginx به حساب می آید. Apache از دهه 90 میلادی در بازار موجود بوده و کاربران زیادی دارد. اگر شما در مورد انتخاب بهترین وب سرور کنجکاو هستید، به اطلاعات مختصر داده شده در زیر در مورد مقایسه این دو نرم افزار توجه کنید.

پشتیبانی سیستم عامل (OS Support)

سازگاری یکی از کوجکترین چزئیاتی است که باید در هنگام انتخاب نرم افزار به آن توجه داشته باشید. نرم افزار آپاچی و انجین ایکس هر دو بر روی خیلی از سیستم عامل هایی که از سیستم UNIX پشتیبانی می کنند قابل اجرا هستند. ولی متاسفانه اجرای NGINX بر روی ویندوز به خوبی اجرای آن بر روی پلت فورم های دیگر نمی باشد.

پشتیبانی کاربر(User Support)

کاربر ها، از مبتدی تا حرفه ای، همواره به دنبال اجتماع خوبی برای مواقعی که با مشکل روبرو می شوند هستند. با اینکه هر دوی آنها پشتیبانی از طریق نامه نگاری دارند و عضو انجمن Stack Overflow می باشند، آپاچی فاقد پشتیبانی از، Apache Foundation،شرکت خودش ندارد.

عملکرد(Performance)

Nginx برای 1000 ارتباط محتوای استاتیک سرعتی دو برابر سرعت آپاچی دارد، و نیز حافظه ی کمتری را اشغال می کند. ولی در مقایسه عملکرد و اجرا محتویات پویا هردو دارای سرعت یکسان می باشند.NGINX برای وب سایت های استاتیک گزینه مناسب تری می باشد.

نتیجه گیری

انچین ایکس یک وب سرور می باشد که به عنوان پروکسی ایمیل، پروکسی معکوس(reverse proxy) و load balancer نیز به کار می رود. ساختار نرم افزار رویدادگرا و نا همزمان می باشد که پردازش همزمان چندین درخواست را ممکن می سازد. همچنین مقیاس پذیری بالایی دارد که سرویس آن بنا به استفاده کاربران می تواند بزرگتر شود. NGINX و Apache دو مورد از بهترین وب سرورهای موجود در بازار می باشند

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا