چرا nginx بهترین دوست وردپرس است؟
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 10 دقیقه

چرا nginx بهترین دوست وردپرس است؟

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

وب سرور

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

رایج‌ترین وب سرورها apache، IIS و nginx هستند.

وب سرور قادر است هر دو محتوای استاتیک و داینامیک که با کمی تفاوت به کلاینت ارسال می‌شود را مدیریت کند. بخش سرور متناسب با آنچه که فرآیند worker نامیده می‌شود در حافظه بارگذاری می‌گردد و مسئول ارائه محتوای درخواستی است. هم apache و هم nginx محتوای استاتیک و داینامیک را مدیریت می‌کنند. با این‌که apache می‌تواند هر دو را در یک فرآیند worker مدیریت نماید، اما nginx این کار را نمی‌کند زیرا برای انجام آن به یک پردازنده خارجی نیاز دارد.

چرا apache و nginx اینقدر محبوب هستند؟ پاسخ کوتاه این است که آن‌ها متن باز و رایگان هستند. همچنین هر دو با هم تقریبا 50 درصد از کل ترافیک جهان را تشکیل می‌دهند.

Apache چیست؟

سرور HTTP آپاچی توسط رابرت مک کول در سال 1995 ایجاد شد و در حال حاضر توسط بنیاد نرم افزار آپاچی در حال توسعه است. این وب سرور از سال 1996 محبوب‌ترین انتخاب بوده و از نظر طراحی بسیار ماژولار است، مستندات زیادی دارد و به قدری محبوب است که اساس همه کنترل پنل‌های میزبانی وب به شمار می‌رود. حتی در cPanel (پرکاربردترین کنترل پنل در جهان) نیز گنجانده شده است.

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

آپاچی می‌تواند محتوای استاتیک و داینامیک را به تنهایی در یک worker مدیریت کند، به همین دلیل انعطاف‌پذیری آن عالی است اما این کار را به بهای عملکرد انجام می‌دهد.

آپاچی به کند بودن شهرت دارد، اما زمانی که محبوبیت nginx افزایش پیدا کرد این قضیه افشا شد. تفاوت عملکرد بین آن‌ها چیزی است که نمی‌توان نادیده گرفت. تنها به دلیل این موضوع اکثر شرکت‌های بزرگ به nginx روی آوردند. با وجود اینکه آپاچی همچنان محبوب است، اما مطمئنا در آینده همه چیز تغییر خواهد کرد، زیرا فناوری به‌روز می‌شود و نرم افزارهای بیشتری که قبلا فقط روی آپاچی کار می‌کردند، با nginx هماهنگ می‌شوند.

Nginx چیست؟

Nginx از روسیه می‌آید. در سال 2002 یک برنامه نویس به نام ایگور سیسویف شروع به کار بر روی nginx کرد، زیرا عمیقا نگران مشکل C10K بود. به بیان ساده بهینه‌سازی سوکت‌های شبکه برای رسیدگی به تعداد زیادی از مشتریان در یک زمان (نقطه ضعف اصلی آپاچی) یک چالش واقعی برای وب مدرن بود. انتشار اولیه آن در سال 2004 بر اساس معماری مبتنی بر رویداد (events-driven) عمومی شد.

حتی خود سیسویف هم باور نمی‌کرد nginx اینقدر به موفقیت برسد. مزایای فوق‌العاده، سرعت آن و استفاده کم از منابع با گذشت زمان آشکار شد. Nginx روشی عالی برای ارائه محتوای استاتیک است اما نمی‌تواند محتوای داینامیک را مدیریت کند. این نیز یک مزیت بود، زیرا محتوای داینامیک به worker محدود نمی‌شد بنابراین می‌توانست خیلی سریع‌تر کار کند.

Nginx در ارائه محتوای سریعتر با حجم بسیار بالاتری از اتصالات نسبت به Apache برتری دارد و در حال حاضر گزینه‌ای برای میزبانی سرویس‌هایی است که می‌خواهند بهترین عملکرد ممکن را ارائه دهند. معماری رویداد محور و ماهیت ناهمزمان بودن، نقاط قوت عملکرد آن هستند.

در ابتدا nginx یک اشکال اساسی داشت و آن مستندسازی بود. به دلیل روسی بودن برنامه نویس و نحوه مستندسازی عملکردهای آن، شروع سختی داشت. اما با گذشت زمان و استفاده بیشتر و بیشتر از nginx، مستندات و منابع بسیار بهبود یافتند.

اشکال دیگر عدم طراحی ماژولار آن است. به این معنی که نمی‌تواند مانند آپاچی در فایل htaccess. فرایندها را به صورت real-time پردازش کند و همچنین نمی‌تواند ماژول‌ها همزمان بارگذاری نماید. این چیزی است که nginx در حال حاضر روی آن کار می‌کند، اما هنوز برای مطابقت با انعطاف‌پذیری آپاچی به زمان نیاز دارد.

اما معایب آن به نوعی تحت‌الشعاع عملکرد عالیش قرار می‌گیرند که به خودی خود به nginx این امکان را داده است تا به انتخاب محبوب برای میزبانی تبدیل شود و پایه و اساس سرویسی است که به طور گسترده مانند Steam مورد استفاده قرار می‌گیرد و بارها و بارها ثابت کرده که می‌تواند به طور مداوم از هر نظر امتیاز بالاتری نسبت به Apache داشته باشد.

چرا Nginx انتخاب بهتری برای میزبانی وردپرس است؟

چندین نکته وجود دارد که در آن‌ها nginx به مراتب بهتر از Apache برای میزبانی وب سایت‌های وردپرسی است. من سعی می‌کنم این نکات را در لیست زیر خلاصه کنم.

- نصب آسان

Nginx یک پکیج کامل است، برای کار کردن به ماژول‌های خارجی بسیار کمی نیاز دارد و در اکثر مواقع فقط یک خط در لینوکس برای فعال کردن آن لازم است.

apt-get install nginx

yum install nginx

تمام چیزی که لازم است nginx به عنوان یک سرویس فعال شود. بقیه پیکربندی در تنظیمات صورت می‌گیرد.

- می‌تواند به عنوان یک پروکسی برای آپاچی یا هر وب سرور دیگری کار کند

Nginx می‌تواند به عنوان یک پروکسی بدون اینکه بر عملکرد سرور تأثیر بگذارد، عملکرد آنی را برای هر پیکربندی وب سرور آپاچی افزایش دهد.

- می‌تواند به طور مستقیم با microcache یا حتی fastcgi کار کند

Nginx به دلیل اینکه تحت microcache ساخته شده بسیار عالی عمل می‌کند و حتی می‌تواند با سیستم کش fastcgi کار کند و باعث شود سرعت تا 10 برابر افزایش یابد، بدون این‌که به یک مکانیزم کش خارجی مانند memcache نیاز داشته باشد.

- برای ارائه محتوا فوق‌العاده سریع است

Nginx هنگام برخورد با محتوای استاتیک به سرعت عمل می‌کند و پیکربندی آن برای چنین اهدافی بسیار آسان است. یک خط کد می‌تواند دسترسی به رایج‌ترین فایل‌ها مانند محتوای استاتیک را فعال کند و عملکرد آن را بهبود بخشد. به علاوه اگر بدانید چگونه HttpProxyModule را پیکربندی کنید، حتی می‌توانید به همان سطح کارایی برای محتوای داینامیک بدون تأثیر بر عملکرد وب سرور دست پیدا کنید.

- اتصالات همزمان تقریبا 4 برابر بیشتر از Apache

اگر در نظر دارید یک وب سایت با تقاضای بسیار بالا مثلا هزاران بازدید در روز را میزبانی کنید، خوب است بدانید که nginx می‌تواند چهار برابر Apache اتصالات همزمان را پردازش کند. این امر دو مزیت به همراه دارد:

  • وب سایت شما به طور کلی سریعتر خواهد بود.
  • برای انجام این کار به منابع کمتری نسبت به آپاچی نیاز خواهید داشت.

چنین قابلیتی مدیون ماهیت رویداد محور nginx است و موجب مزایای دیگری که در ادامه ذکر می‌کنیم نیز می‌شود.

- سبک وزن

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

در واقع راز موفقیت در خود موتور آن است. Nginx به عنوان یک وب سرور مبتنی بر رویداد عمل می‌کند، به این معنی که رویدادها به worker گوش می‌دهند و تنها در صورت نیاز پاسخگو هستند. آرگومان ondemand در داخل nginx به سرویس اجازه می‌دهد تا شنوندگان را در صورت تقاضا ایجاد و حذف کند. این امر به کاهش استفاده از حافظه و افزایش کارایی کمک خواهد کرد. آپاچی ابتدا سعی کرد حالت رویداد را در mpm-event worker قرار دهد، اما در تطابق با سرعت nginx به شدت شکست خورد، زیرا آپاچی به عنوان یک وب سرور رویداد محور ساخته نشده بود.

- بارگیری متعادل

Nginx را می‌توان برای تعادل بار (Load Balance) پیکربندی کرد، از این رو با توزیع بار بین چندین سرور، نرخ اتصالات همزمان آن را حتی بیشتر افزایش می‌دهد و آن را برای پروژه‌هایی که دارای بار بسیار بالایی از اتصالات همزمان هستند ایده‌آل می‌کند.

جمع‌بندی

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

شرکت‌های هاستینگ باکیفیت مانند WP Engine و Flywheel در حال حاضر روی nginx کار می‌کنند. اما اگر قصد دارید از خدمات یک شرکت میزبانی متفاوت استفاده کنید، تحقیقات خود را انجام دهید یا از یک پشتیبانی فنی سوال کنید که آیا فناوری وب سرور شامل nginx است یا خیر. من تضمین می‌کنم که اگر سرویس باکیفیتی باشد، قطعا nginx در بخشی از آن گنجانده شده است.

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
5 از 1 رای

2 ماه پیش
وردپرس
wordpress
nginx
وب_سرور
/@heshmati74
عرفان حشمتی
Full-Stack Web Developer

مهندس معماری سیستم های کامپیوتری، طراح و توسعه دهنده وب سایت

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

عرفان حشمتی

Full-Stack Web Developer