Apache & Nginx. Свързани с вериги

Как е реализирана връзката Apache & Nginx в Timeweb

За много компании Nginx + Apache + PHP е много типична и разпространена комбинация, а Timeweb не е изключение. Въпреки това, е любопитно и полезно да се разбере как точно е реализирана.

Apache & Nginx. Свързани с една верига

Използването на такава комбинация, разбира се, е провокирано от нуждите на нашите клиенти. И Nginx, и Apache играят особена роля, всеки решава определена задача.

Основни настройки Apache се извършват в конфигурационните файлове на самия Apache, а настройките за клиентските сайтове се правят чрез файла .htaccess. .htaccess е конфигурационен файл, в който клиентът може сам да настрои правилата и поведението на уеб-сервера. Тази настройка ще бъде специфична за неговия сайт. Например, благодарение на функционалността на Apache, потребителите могат да променят режима на работа в рамките на една версия PHP от mod_php на mod_cgi; могат да настройват пренасочвания, оптимизация за SEO, удобен URL, някои лимити за PHP.

Nginx се използва като прокси-сервер за пренасочване на трафика към Apache и като уеб-сървър за доставка на статично съдържание. Също така за Nginx разработихме модули за сигурност, които позволяват да защитим данните на нашите потребители, например, да разделим правата на достъп.

Да предположим, че някой потребител влиза в сайта на наш клиент. Първо, потребителят попада на Nginx, който доставя статично съдържание. Това става мигновено. След това, когато дойде времето за зареждане на PHP, Nginx пренасочва заявката към Apache. И Apache заедно с PHP генерират динамично съдържание.

Характеристики на връзката Apache & Nginx в Timeweb

На нашия виртуален хостинг са реализирани 2 основни схеми за работа на Apache & Nginx: Споделена и Посветена.

Схема Споделена

Тази схема се използва за повечето потребители. Отличава се с простота и ресурсна ефективност: Споделената схема използва по-малко ресурси, затова и тарифата й е по-ниска. Според тази схема на сървъра е стартиран един Nginx, който обслужва всички потребителски заявки, и няколко екземпляра Apache.

Схема Споделена е подобрявана дълго време: постепенно коригирахме недочетите. Удобно е, че може да се реализира без необходимост от доработка на изходния код.

Apache & Nginx. Свързани с една верига
схема Споделена

Схема Посветена

Dedicated изисква повече ресурси, затова тарифът е по-скъп за клиентите. В схемата Dedicated за всеки клиент се стартира собствен, отделен Apache. Ресурсите тук се резервират за клиента и се предоставят изключително. Как работи: на сървъра има няколко версии на PHP. Поддържаме версиите 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Така, за всяка версия на PHP се стартира собствен Apache.

Apache & Nginx. Свързани с една верига
схема Dedicated

Безопасна зона. Настройка на зоните в Nginx

По-рано за Nginx използвахме много зони на споделена памет (zone) — един блок server за един домейн. Тази настройка изискваше много ресурси, тъй като за всеки сайт се създаваше отделна зона. Въпреки това, в настройките на Nginx повечето сайтове са еднотипни, затова успяваме да ги поместим в една зона благодарение на използването на директиви map в модула ngx_http_map_module, които позволяват задаване на съответствия. Например, имаме шаблон за зона, в която трябва да се подават променливи: път към сайта, версия на PHP, потребител. Така се ускори прочита на конфигурацията на Nginx, тоест релоад.

Тази конфигурация значително спести ресурси на оперативната памет и ускори работата на Nginx.

Reload не е успешен!

В схемата Shared се освободихме от необходимостта от перезареждане (релоад) на Apache при промени в настройките на сайтовете. По-рано, когато един клиент искаше да добави домейн или да смени версията на PHP, беше необходимо задължително релоад на Apache, което водеше до забавяния в отговорите и негативно се отразяваше на производителността на сайтовете.

Освободихме се от релоадите чрез създаване на динамични конфигурации. Благодарение на mpm-itk (модул на Apache), всеки процес се изпълнява от отделен потребител, което повишава нивото на безопасност. Този метод позволява предаване на данни от Nginx в Apache2 относно потребителя и неговия document_root. Така Apache не съдържа конфигурации на сайтове, а ги получава динамично, и релоадите повече не са необходими.

Apache & Nginx. Свързани с една верига
Конфигурация на схемата Shared

А какво ще кажете за Docker?

Много компании преминаха на система, базирана на контейнери. Timeweb в момента разглежда възможността за подобен преход. Без съмнение, в всяко решение може да се намерят предимства и недостатъци.

Вместо очевидните предимства, в контейнерната система на потребителя са предоставени по-малко ресурси. В Timeweb, благодарение на описаната схема на работа на хостинга, на потребителя не му е наложено ограничение на оперативната памет. Той получава повече ресурси отколкото в контейнера. Освен това, потребителят може да зарежда повече модули Apache.

Timeweb осигурява работа на около 500 000 сайта. Ние носим голяма отговорност и не правим незабавни, неоправдани промени в сложната архитектура. Връзката Apache & Nginx е надеждна и проверена през времето. Ние, от наша страна, се стремим да постигнем максимална производителност благодарение на уникалните конфигурации.

За качествената и бърза работа на голям брой сайтове е необходимо да се използва шаблонна и динамична конфигурация на Apache и Nginx. Тя позволява лесно и бързо администриране на голям брой еднотипни сървъри.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster