Apache & Nginx. Звязаныя адным ланцугом

Як рэалізавана звязак Apache & Nginx у Timeweb

Для многіх кампаній Nginx + Apache + PHP - вельмі тыповая і распаўсюджаная звязак, і Timeweb тут не стаў выключэннем. Аднак разабрацца, як менавіта яна рэалізавана, можа быць цікава і карысна.

Apache & Nginx. Звязаныя адным ланцугом

Выкарыстанне такой звязкі, вядома, прадыктавана запатрабаваннямі нашых кліентаў. І Nginx і 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: Shared і Dedicated.

Схема Shared

Гэтая схема выкарыстоўваецца для большасці карыстальнікаў. Яе адрознівае прастата і рэсурсаёмістасць: Shared-схема выкарыстоўвае менш рэсурсаў, таму і яе тарыф таннейшы. Паводле дадзенай схемы на серверы запушчаны адзін Nginx, які дазваляе абслугоўваць усе карыстацкія запыты, і некалькі асобнікаў Apache.

Схема Shared удасканальвалася доўгі час: паступова мы выпраўлялі недахопы. Зручна, што яе можна зрабіць без неабходнасці дапрацоўваць зыходны код.

Apache & Nginx. Звязаныя адным ланцугом
схема Shared

Схема Dedicated

Dedicated патрабуе больш рэсурсаў, таму яе тарыф даражэйшы для кліентаў. У Dedicated-схеме для кожнага кліента паднімаецца свой, асобны Apache. Рэсурсы тут рэзервуюцца пад кліента, яны выдзяляюцца эксклюзіўна. Як гэта працуе: на сэрвэры ёсьць некалькі вэрсіяў PHP. Мы падтрымліваем версіі 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Так, для кожнай версіі PHP запускаецца свой Apache.

Apache & Nginx. Звязаныя адным ланцугом
схема Dedicated

Safe zone. Настройка зон у 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

Дадаць каментар