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. Միացված է մեկ շղթայով
Համատեղ սխեմա

Նվիրված սխեմա

Նվիրվածը պահանջում է ավելի շատ ռեսուրսներ, ուստի դրա սակագինը ավելի թանկ է հաճախորդների համար: Նվիրված սխեմայում յուրաքանչյուր հաճախորդ ստանում է իր առանձին Apache-ն: Այստեղ ռեսուրսները վերապահված են հաճախորդի համար, դրանք հատկացվում են բացառապես: Ինչպես է այն աշխատում: Սերվերում կան PHP-ի մի քանի տարբերակներ: Մենք աջակցում ենք 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4 տարբերակները: Այսպիսով, PHP-ի յուրաքանչյուր տարբերակի համար գործարկվում է իր սեփական Apache-ն:

Apache & Nginx. Միացված է մեկ շղթայով
Նվիրված սխեմա

Անվտանգ գոտի. Nginx-ում գոտիների ստեղծում

Նախկինում Nginx-ի համար մենք օգտագործում էինք բազմաթիվ ընդհանուր հիշողության գոտիներ (գոտիներ)՝ մեկ սերվերի բլոկ յուրաքանչյուր տիրույթում: Այս կարգավորումը պահանջում է շատ ռեսուրսներ, քանի որ յուրաքանչյուր կայքի համար ստեղծվում է առանձին գոտի: Այնուամենայնիվ, Nginx-ի կարգավորումներում կայքերի մեծ մասը նույն տիպի են, ուստի դրանք կարող են տեղադրվել մեկ գոտում՝ մոդուլում քարտեզի հրահանգների օգտագործման շնորհիվ: ngx_http_map_module, որոնք թույլ են տալիս նշել համապատասխանությունները: Օրինակ, մենք ունենք գոտու ձևանմուշ, որտեղ մենք պետք է մատակարարենք փոփոխականներ՝ ուղի դեպի կայք, PHP տարբերակ, օգտվող։ Այսպիսով, Nginx կոնֆիգուրացիայի վերընթերցումը, այսինքն՝ վերաբեռնումը, արագացվեց։

Այս կոնֆիգուրացիան մեծապես խնայեց RAM-ի ռեսուրսները և արագացրեց Nginx-ը:

Վերբեռնումը չի աշխատի:

Համօգտագործված սխեմայում մենք ազատվեցինք Apache-ի վերաբեռնման անհրաժեշտությունից՝ կայքի կարգավորումները փոխելու ժամանակ: Նախկինում, երբ մի հաճախորդ ցանկանում էր ավելացնել տիրույթ կամ փոխել PHP տարբերակը, պահանջվում էր Apache-ի պարտադիր վերաբեռնում, ինչը հանգեցրեց պատասխանների հետաձգմանը և բացասաբար ազդեց կայքի աշխատանքի վրա:

Մենք ազատվեցինք վերաբեռնումներից՝ ստեղծելով դինամիկ կոնֆիգուրացիաներ: Շնորհիվ mpm-itk (Apache մոդուլ), յուրաքանչյուր գործընթաց աշխատում է որպես առանձին օգտվող, ինչը բարձրացնում է անվտանգության մակարդակը։ Այս մեթոդը թույլ է տալիս օգտատիրոջ և նրա document_root-ի մասին տվյալները Nginx-ից փոխանցել Apache2: Այսպիսով, Apache-ն չի պարունակում կայքի կոնֆիգուրացիաներ, այն ստանում է դրանք դինամիկ կերպով, և վերաբեռնումներն այլևս չեն պահանջվում։

Apache & Nginx. Միացված է մեկ շղթայով
Համօգտագործվող սխեմայի կազմաձևում

Ինչ վերաբերում է Docker-ին:

Շատ ընկերություններ անցել են կոնտեյներների վրա հիմնված համակարգի: Timeweb-ը ներկայումս դիտարկում է նման անցման հնարավորությունը։ Իհարկե, յուրաքանչյուր որոշման մեջ կան դրական և բացասական կողմեր:

Անժխտելի առավելությունների հետ մեկտեղ կոնտեյներային համակարգը օգտվողին տրամադրում է ավելի քիչ ռեսուրսներ: Timeweb-ում, նկարագրված հոսթինգի սխեմայի շնորհիվ, օգտվողը չունի RAM-ի սահմանափակում: Այն ավելի շատ ռեսուրսներ է ստանում, քան կոնտեյներով: Բացի այդ, օգտվողը կարող է ունենալ ավելի շատ Apache մոդուլներ բեռնված:

Timeweb-ը աշխատում է մոտ 500 կայք: Մենք մեծ պատասխանատվություն ենք վերցնում և չենք կատարում ակնթարթային, չհիմնավորված փոփոխություններ բարդ ճարտարապետության մեջ: Apache & Nginx համադրությունը հուսալի և ժամանակի փորձարկված է: Մենք, իր հերթին, փորձում ենք հասնել առավելագույն արդյունավետության եզակի կոնֆիգուրացիաների միջոցով:

Մեծ թվով կայքերի որակյալ և արագ աշխատանքի համար անհրաժեշտ է օգտագործել Apache-ի և Nginx-ի կաղապար և դինամիկ կոնֆիգուրացիա։ Այն թույլ է տալիս հեշտությամբ և արագ կառավարել մեծ թվով նմանատիպ սերվերներ:

Source: www.habr.com

Добавить комментарий