NGINX срещу Apache (Pro / Con преглед, употреби и хостинг за всеки)

TL; DR: Ние оценяваме два от най-популярните уеб сървъри: NGINX и Apache, по шест ключови точки за сравнение (производителност за статично спрямо динамично съдържание, поддръжка на ОС, сигурност, гъвкавост, документация и поддръжка). Ще открием, че двамата са достойни конкуренти, но .htaccess файлът на Apache го прави особено привлекателен за споделените хостинг клиенти. Междувременно, NGINX царува върховно за динамична поддръжка на съдържание, а отчасти благодарение на своите по-модерни предложения за функции, се използва най-популярно от VPS и специализирани хостинг потребители. Накрая ще разгледаме нашите препоръки за хостинг на следващия ви проект за уеб приложения.


Имаше време (~ края на 90-те-2011 г.), когато уеб сървърът Apache обслужваше около 60 процента – и понякога дори повече – на уебсайтовете в света. Оттогава този процент е паднал под 35 и все още спада с доста значителна скорост. Междувременно, уеб сървърът на IIS на Microsoft държи донякъде стабилен, леко увеличаващ се дял на пазара, достигайки 30 процента днес. Трето място се заема от конкурент наречен NGINX (произнася се „engine-x“), който в момента обслужва около 16 процента от всички сайтове и този процент непрекъснато расте с около един процент всяка година.

Ще отбележа, че някои уеб инспектори поставят пазарните дялове на Apache и NGINX много по-високи, считайки IIS за по-слаб конкурент. Реалността вероятно се намира някъде по средата, но цялостните тенденции са ясни. Имайки предвид само най-натоварените сайтове в мрежата, Apache държи около 46 процента от пазарния дял, но тази част пада с около четири процента годишно; NGINX заема силно второ място с 24 процента от пазарния дял и расте с около три процента всяка година. Ясно е, че NGINX примамва най-големите уеб имоти в света с нещо!

Резултати от проучването на Netcraft за пазарните дялове на уеб сървъра

Сравнение на пазарните дялове на уеб сървъра на NetCraft: във всички сайтове (отляво) & В най-милиарда най-натоварените сайтове (вдясно)

В тази статия ще направим сравнения на NGINX / Apache за следните области на интерес:

  • производителност
  • Поддръжка на ОС
  • Сигурност
  • гъвкавост
  • Документи
  • Потребителска поддръжка

Първо, нека се уверим, че всички сме запознати с уеб сървърите, които сравняваме … Или можете да преминете към нашия обобщен преглед на Apache и NGINX, който включва нашите хостинг препоръки.

Общ преглед на Apache

Apache е компонентът на уеб сървъра на популярния стек LAMP (Linux, Apache, MySQL, PHP). Въпреки че днес има много други компоненти на уеб стека (например NodeJS, JS рамки за богати клиенти, различни облачни услуги и т.н.), LAMP все още остава много популярен.

Уеб сървърът Apache има богат набор от функции, които могат да бъдат активирани чрез инсталиране на един от приблизително 60 официални модула или един от многото други неофициални модули, които също съществуват.

През годините Apache разработи няколко метода за обработка на уеб заявки за подобряване на неговата ефективност (главно използване на RAM и латентност). В свят, в който все повече едновременни уеб заявки трябва да се обработват от сайтове и където обслужваните размери на страниците станаха много по-големи, тези по-нови методологии бяха необходими.

Методологията за обработка на заявки Apache може да бъде конфигурирана по един от трите начина. Ще разделя трите основни модула за много обработка (MPM) по-долу:

  1. модел на процеса: Това е оригиналният метод „предварително вилица“; тя не мащабира добре с много паралелни връзки, тъй като консумира много RAM и дори може да откаже връзките при големи натоварвания. По-малките сайтове няма да забележат това, но по-големите сайтове вероятно ще го направят.
  2. модел на работника: Това създава единен процес на контрол, който е отговорен за стартирането на дъщерни процеси. Всеки достъпен процес създава фиксиран брой нишки, както и нишка на слушател. Нишката на слушателя слуша за връзки и ги предава на нишка за обработка, когато те пристигнат. Въпреки че този модел мащабира много по-добре от метода на предварителната вилица, той все още може да се сблъска с проблеми с мащабирането на сайтове с много голям трафик, поради единния проблем в процеса на управление.
  3. модел на събитието: Това е подобно на работния модел, но създава една слушателска нишка, която слуша връзки и ги предава на работната нишка за обработка. Този MPM обработва дългосрочните връзки много по-ефективно на една нишка (манипулиране с KeepAlive). От Apache 2.4 моделът на събитията се счита за стабилен и сега също е настройка по подразбиране, ако операционната система може да го поддържа.

Можете също да опитате опции за компилиране и време за изпълнение за подобряване на производителността на Apache.

Преглед на NGINX

NGINX е създаден в отговор на предизвикателството на C10K да борави с поне 10 000 едновременни клиентски връзки на един сървър. NGINX използва асинхронна архитектура, управлявана от събития, за да се справи с тези огромни количества връзки. Тази архитектура прави работата с високи и колебателни товари много по-предсказуема по отношение на използването на RAM, използването на процесора и закъсненията.

Карта на архитектурата, управлявана от събития на NGINX

Задвижваната от събития архитектура на NGINX помага за прогнозиране на използването на RAM и процесора, както и закъсненията за високи / колебателни натоварвания.

Основната разлика между NGINX и Apache по отношение на моделите на събития е, че NGINX не настройва допълнителни работни процеси на връзка. В повечето случаи препоръчителната конфигурация на NGINX изпълнява един работен процес на процесор, като увеличава максимално ефективността на хардуера.

NGINX също има богат набор от функции и може да изпълнява различни сървърни роли:

  • Обратен прокси сървър за HTTP, HTTPS, SMTP, POP3 и IMAP протокол
  • Балансиращо натоварване и HTTP кеш
  • Frontend прокси за Apache и други уеб сървъри, съчетаващ гъвкавостта на Apache с доброто статично съдържание на NGINX

NGINX поддържа FastCGI и SCGI обработчици за обслужване на скриптове за динамично съдържание като PHP и Python. Той използва стека LEMP: вариант на LAMP, използвайки фонетичния правопис на NGINX (Linux, “En-juhn-ex”, MySQL, PHP).

NGINX срещу Apache: производителност, поддръжка, сигурност, & Документи в сравнение

Сега нека сравним и двата уеб сървъра в няколко полета. Ще открием, че Apache и NGINX са достойни конкуренти, но в зависимост от вашия случай на използване, единият може да е по-подходящ за вашия проект от другия. Не се притеснявайте, ще го обобщя добре в заключителното си сравнение NGINX / Apache.

производителност

По-долу ще сравним ефективността на Apache (използвайки събитието MPM) с тази на NGINX както в статични, така и в динамични съдържащи роли.

Статично съдържание

NGINX е около 2,5 пъти по-бърз от Apache въз основа на резултатите от сравнителен тест, работещ до 1000 едновременни връзки. Друг показател, работещ с 512 едновременни връзки, показа, че NGINX е около два пъти по-бърз и консумира малко по-малко памет (4%).

Ясно е, че NGINX обслужва статично съдържание много по-бързо от Apache. Ако трябва да обслужвате много статично съдържание при високи нива на съвместимост, NGINX може да бъде истинска помощ.

Динамично съдържание

Отмерителен показател за 2015 г., който сравнява обслужването на динамично съдържание от Apache и NGINX, установи, че MPM събитието на Apache, когато е сдвоено с модула PHP-FPM, може да се справи със същата съвместимост, както и NGINX с PHP. Друго сравнение на производителността на уеб сървъра показа подобни резултати. Причината за това е, че почти цялото време за обработка на заявките се изразходва в средата на изпълнение на PHP, а не в основната част на уеб сървъра. Средата на изпълнение на PHP е доста сходна между двата уеб сървъра.

Базата за динамично съдържание на Speedemy - Apache срещу NGINX

Сравнителният анализ на уеб сървъра на Speedemy намери подобни резултати, използвайки Apache и NGINX, за да обслужва динамично съдържание.

По отношение на PHP (и вероятно и на други езици), динамичната производителност на сървъра за страници е практически равна на правилната настройка на модула Apache (PHP-FPM + FastCGI). Ако наистина искате да ускорите динамичните страници, имате няколко опции: добавете лак или Memcached кеширащ слой, преминете към по-бързо PHP изпълнение (например, HHVM), направете балансиране на зареждането или добавете повече хардуер.

За съжаление, превъзходното представяне на статични страници на NGINX не се превръща в обслужване на динамични страници. И двата уеб сървъра отбелязват приблизително едно и също ниво.

Поддръжка на операционната система

Apache работи на всички видове Unix-подобни системи (например Linux или BSD) и има пълна поддръжка за Microsoft Windows. NGINX също работи на няколко модерни Unix-подобни системи и има известна поддръжка за Windows, но производителността му на Windows не е толкова силна, колкото тази на други платформи.

Тук Apache излиза малко по-силен.

Сигурност

И двата проекта имат отлична информация за сигурността на своята кодова база, базирана на C. Кодовата база на NGINX обаче е значително по-малка с няколко порядъка, така че това определено е голям плюс от перспективата на перспектива за сигурност.

Има налични отчети за уязвимостта за Apache 2.2 и 2.4. NGINX разполага и със списък на последните съвети за сигурност. Apache предлага съвети за конфигурация за обработка на DDoS атаки, както и mod_evasive модул за отговор на HTTP DoS, DDoS или брутални атаки. Можете също да намерите полезни ресурси за справяне със DDoS заплахите в блога на NGINX.

гъвкавост

Персонализирането на уеб сървъра може да се извърши чрез модули за писане. Apache има динамично зареждане на модули за най-дълго време, така че всички модули Apache поддържат това.

Това обаче не е така за NGINX. В началото на 2016 г. NGINX получи поддръжка за динамично зареждане на модули; преди това NGINX изискваше администратора да компилира модулите в NGINX двоичен файл. Повечето модули все още не поддържат динамично зареждане, но с течение на времето вероятно ще го направят.

Apache очевидно води по този въпрос.

Зареждане на динамичен модул & модули

Както Apache, така и NGINX разполагат с голям и нарастващ набор от специфични функционални модули.

Apache модули:

  • Официални модули (Намерени в раздела Модули на документацията на Apache)
  • Списък на модулите в Wikipedia

За съжаление изглежда, че добре поддържан списък на всички модули на трети страни все още не съществува.

Сравняване на NGINX и Apache

NGINX и Apache имат богати и непрекъснато нарастващи набори от функции, но случаите на най-добро използване варират за всеки уеб сървър.

NGINX модули:

  • Официални модули (намерени в раздела Справочник за модулите на документацията за NGINX)
  • Модули на трети страни

Не е лесно да се каже дали Apache или NGINX имат явно предимство тук, но повечето от основните функции на модула (напр. Проксинг, кеширане, балансиране на натоварването и т.н.) са налични и за двата уеб сървъра. NGINX изглежда по-силен в областта на това да действа като обратен прокси за TCP и имейл (SMTP, IMAP, POP3) връзки. В областта на модулите за стрийминг на медии, комерсиалната версия на NGINX Plus също изглежда по-силна.

Apache .htaccess

NGINX не поддържа нещо като .htaccess файла на Apache.

Използвайки .htaccess файлове, човек може да отмени настройките за цялата система на база директория; въпреки това, за оптимална работа, тези .htaccess директиви трябва да бъдат включени в основния конфигурационен файл (и), когато е възможно. Това не е възможно в случай на споделени хостинг среди, но може да добави много гъвкавост за споделени хостинг потребители.

документация

Документацията както за Apache, така и за NGINX е отлична, включително и уикито за NGINX. NGINX също предлага онлайн и обучения на място по различни теми от NGINX – включително сертификати за изпити.

поддържа

Поддръжката на общността на Apache се осъществява чрез пощенски списъци, IRC и препълване на стекове. Комерсиалната поддръжка на Apache е достъпна от редица компании на трети страни, като OpenLogic, но официален списък от Apache Foundation не се поддържа.

NGINX има поддръжка на общността чрез пощенски списъци, IRC, препълване на стекове и форум. Компанията зад NGINX предлага комерсиален продукт, наречен NGINX Plus, който има поддръжка за набор от допълнителни функции по отношение на балансиране на натоварването, поточно предаване на медиите и мониторинг.

Apache срещу NGINX в рецензия

И двата уеб сървъра в последните си версии могат да се конкурират помежду си в повечето области. За статичното съдържание NGINX е крал, но за динамичното съдържание разликата в производителността е доста малка. NGINX блести с някои от своите по-усъвършенствани функции (поточно предаване на медии, обратно прокси за не-HTTP протоколи), както и с търговската си поддръжка и обучение.

Потребителите на споделен хостинг може да предпочетат удобството на .patacess файл Apache, а Apache по-добре поддържа зареждането на различни динамични модули, функция, която NGINX е добавен едва наскоро. NGINX се използва главно за VPS хостинг, посветен хостинг или клъстер контейнери.

Собствениците на уебсайтове с голям трафик, които трябва да обслужват много статично съдържание и / или медийни потоци, вероятно ще предпочетат NGINX (или да използват комбинация от Apache и NGINX). В повечето други случаи на използване на уебсайтове, всеки уеб сървър ще свърши добре работата. За да започнете с който и да е уеб сървър, ще ви трябва солиден хостинг доставчик на Linux. За щастие, нашият екип сравни най-добрите доставчици и може да ви насочи в правилната посока за Linux хостинг за споделени или виртуални сървъри.

Намерете най-популярния хостинг за Linux
Намерете най-доброто Linux VPS за вас

Е, там го имаш. Ако все още имате въпроси, преди да изберете NGINX или Apache за следващия си уеб проект, не забравяйте да ни уведомите по-долу!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me