انجین ایکس nginx چیست و چگونه کار می کند
nginx چیست ؟ یکی دیگر از سوالات پرتکرار کاربران! مدیران سایتهایی که از ترافیک بالایی برخوردارند همواره این دغدغه را دارند که چگونه و به چه شکل میتوانند سرعت لود سایت خود را افزایش دهند. در چنین شرایطی یکی از مواردی که کمک میکند عملکرد سایت بهبود یابد این است که وب سرور باید به اندازهی کافی قدرتمند باشد. در این مقاله قصد داریم تا به پاسخ سوال انجین ایکس nginx چیست و چگونه کار میکند بپردازیم. در ادامه همراه ما باشید تا بیشتر با وب سرور nginx آشنا شویم. همچنین جهت خرید سرور مجازی به پنل کاربری ابر آراز مراجعه کنید.
وب سرور چیست؟
قبل از آن که با مفهوم و کاربرد nginx ( انجین ایکس ) آشنا شویم بهتر است ابتدا بدانیم که وبسرور چیست. وب سرور نرم افزار یا سخت افزاریست که به برنامهای تخصیص یافته که میتواند پاسخگوی درخواستهای کاربران در شبکه جهانی وب (World Wide Web ) باشد.
یک وب سرور میتواند حاوی یک یا چند وبسایت باشد. وب سرور درخواستهای شبکهای که از طریق HTTP یا پروتکلهای دیگر باشند را پردازش میکند. اگر دوپست دارید بیشتر در مورد وب سرور و انواع آن بدانید، فرصت مطالعهی مقالهی web server چیست را از دست ندهید.
تاریخچهی انجین ایکس
انجین ایکس در ماه اکتبر سال 2004 به صورت رسمی منتشر شد. سازنده این نرم افزار به نامIgor Sysoevاین پروژه را در سال 2002 طی تلاش برای حل مسئله C10k آغاز کرد. C10k یک چالش برای مدیریت 10 هزار اتصال همزمان است. امروزه، وب سرور ها باید به اتصالات بیشتری رسیدگی کنند. پس به همین دلیل سرور nginx ساختاری رویدادگرا و ناهمزمان را ارائه میدهد. این ویژگی انجین ایکس را به یکی از قابل اعتماد ترین سرور ها در بحث سرعت و مقیاس پذیری تبدیل کرده است.
به دلیل توانایی بالا در مدیریت اتصالات زیاد و سرعت آن، بسیاری از وب سایت های پر ترافیک و شلوغ از سرویس NGINX استفاده می کنند. برخی از غول های آنلاین شاملGoogle ، Netflix، Adobe، Cloudflare، WordPress.com و بسیاری دیگر می باشند.
انجین ایکس 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 plus چیست ؟
به طور خلاصه میتوان گفت که nginx pluse نمونهای مشتق شده از nginx است. بهطورکلی، ابزار NGINX Plus را میتوان یک load balancer بار نرم افزار ، web server و hidden content دانشت که بر روی NGINX ساخته شده است. NGINX Plus از ویژگیهای منحصربهفردی برخوردار است که در یک سطح سیستم و فراتر از بستر متن باز قرار دارد. برخی از این ویژگیها عبارتند از:
- session resilience
- پیکربندی از طریق API
- بررسی active health
از NGINX Plus به جای load balancer سخت افزاری نیز میتوانید استفاده کنید و بدون محدود کردن زیرساختهای خود، آزادانه نوآوری خود را پیاده سازی کنید.
مزایای nginx plus چیست ؟
- شما با استفاده از nginx plus در مقایسه با ADC های سخت افزاری، بیش از 80٪ صرفه جویی میکنید. علاوه بر اینکه با این کار دیگر نیازی به قربانی کردن عملکرد دیگری نیست. همچنین اگر سازمان شما از load balancer مبتنی بر سخت افزار استفاده میکند، با جایگزینی nginx plus میتوانید مجموعهی کاملی از ویژگیهای ADC را در قالب یک فرم نرم افزاری بسیار انعطاف پذیرتر و با هزینهای کمتر در اختیار داشته باشید.
- قابلیت استقرار در هر پلتفرمی از جمله: private cloud ،public cloud، ماشین مجازی، bare metal، در بحث docker و container و…
- با انجام کارهای مشترک از طریق API ساخته شده در NGINX Plus در وقت صرفه جویی کنید.
- برای سیستمهایی که در حال حاضر از NGINX استفاده میکنند ، NGINX Plus پیچیدگی مدیریت یک زنجیره از فرآیندهای به اصطلاح “do-it-yourself” از پروکسی ها، load balancer و سرور های ذخیره را در یک محیط برنامه از بین می برد.
- ابزار NGINX Plus برای سیستم هایی که نیاز به راه حلی برای تحویل ویدیوی HTTP با قابلیت مقیاس پذیری گسترده دارند، از پشتیبانی پیشرفته ی ویدیویی برخوردار است. (این مورد در وب سرور ها از اهمیت ویژه ای برخوردار است)
قابلیتهای NGINX چیست ؟
از موارد مفید این سرور می توان کمترین حد استفاده از حافظه و همچنین کارایی همزمان و بالای آن را نام برد. از این وب سرور میتوان به عنوان پروکسی معکوس با وب سرور Apache استفاده کرد تا همزمان از قدرت آپاچی و سرعت انجین ایکس استفاده کرد.
تصور کنید که شما یک برنامه وب ایجاد کرده اید و اکنون در جستجوی سرور وب مناسب برای میزبانی از آن هستید. برنامه شما ممکن است شامل چندین فایل استاتیک،HTML ، CSS و JavaScript، یک سرویس API با پس زمینه یا حتی چندین سرویس وب باشد. ممکن است استفاده از Nginx همان چیزی باشد که به دنبال آن هستید و دلایل زیادی برای آن وجود دارد. NGINX یک سرور وب قدرتمند است و از معماری بدون موضوع و رویداد محور استفاده می کند که در صورت پیکربندی صحیح، آن را قادر می سازد تا از حداکثر توان خود استفاده کند. همچنین میتواند کارهای مهم دیگری مانند توازن بار و ذخیره سازی HTTP را انجام دهد یا به عنوان یک پروکسی معکوس مورد استفاده قرار گیرد.
روش کار 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 برای وب سایت های استاتیک گزینه مناسب تری می باشد.
nginx error چیست ؟
انجین ایکس نیز مانند هر سیستم دیگری در برخی موارد دچار ایراد میشود. یکی از جمله مهمترین ارورها و ایراداتی که ممکن است برای NGINX پیش آید، خطای emerg ] : bind() to 0.0.0.0:80 ] است. ما در ادامه قصد داریم تا به شما آموزش دهیم که چگونه باید این خطا را برطرف کنید.
این خطا عموما زمانی رخ میدهد که سرویس توانایی کار با پورت 80 را نداشته باشد و این پورت در سیستم عامل لینوکس شما توسط پروسس و یا سرویسی اشغال شده باشد. این خطا که در Log file وب سرور nginx قابل مشاهده است تنها با استفاده از کد زیر قابل پیگیری است.
sudo netstat -tulpn | grep --color :80
حال برای رفع این مشکل باید تمامی این پروسس و ارتباطات را بست. برای بستن تمامی پروسسها و ارتباطاتی که با پورت 80 برقرار است، دستور زیر را وارد کنید.
Sudo fuser -k 80/tcp
با وارد کردن دستور بالا پس از چند ثانیه تمام پروسسهایی که از پورت 80 استفاده میکنند، اصطلاحا Kill خواهند شد.
نتیجه گیری
انچین ایکس یک وب سرور می باشد که به عنوان پروکسی ایمیل، پروکسی معکوس ( reverse proxy ) و load balancer نیز به کار می رود. ساختار نرم افزار رویدادگرا و نا همزمان می باشد که پردازش همزمان چندین درخواست را ممکن می سازد. همچنین مقیاس پذیری بالایی دارد که سرویس آن بنا به استفاده کاربران می تواند بزرگتر شود. NGINX و Apache دو مورد از بهترین وب سرور های موجود در بازار می باشند