Apache & Nginx. LĂ€nkade i en kedja

Hur Apache & Nginx Àr implementerade i Timeweb

För mÄnga företag Àr Nginx + Apache + PHP en mycket typisk och vanlig kombination, och Timeweb Àr inget undantag hÀr. Men det kan vara intressant och anvÀndbart att förstÄ hur den faktiskt Àr implementerad.

Apache & Nginx. Förbundna i en kedja

AnvÀndningen av en sÄdan kombination dikteras sjÀlvklart av vÄra kunders behov. BÄde Nginx och Apache spelar en sÀrskild roll, och var och en löser ett specifikt problem.

GrundlÀggande instÀllningar Apache utförs i konfigurationsfilerna för Apache sjÀlv, medan instÀllningarna för kundwebbplatser görs genom filen .htaccess.htaccess Àr en konfigurationsfil dÀr kunden kan stÀlla in regler och beteendet för webbservern sjÀlv. Denna konfiguration kommer specifikt att gÀlla för hans eller hennes webbplats. Till exempel, tack vare Apache:s funktionalitet kan anvÀndarna byta arbetslÀge inom en version av PHP frÄn mod_php till mod_cgi; man kan stÀlla in omdirigeringar, SEO-optimering, vÀnliga URL:er och vissa begrÀnsningar för PHP.

Nginx anvÀnds som en proxyserver för att vidarebefordra trafik till Apache och som webbserver för att leverera statiskt innehÄll. Vi har ocksÄ utvecklat sÀkerhetsmoduler för Nginx, som gör det möjligt att skydda vÄra anvÀndares data, till exempel genom att dela upp behörigheterna.

LÄt oss förestÀlla oss att en anvÀndare gÄr in pÄ vÄr kunds webbplats. Först hamnar anvÀndaren pÄ Nginx, som levererar det statiska innehÄllet. Detta sker omedelbart. Sedan, nÀr det kommer till att ladda PHP, vidarebefordrar Nginx förfrÄgan till Apache. Och Apache genererar tillsammans med PHP det dynamiska innehÄllet.

Egenskaper för kombinationen Apache & Nginx i Timeweb

I vÄr virtuella hosting har tvÄ huvudsakliga arbetsscheman för Apache & Nginx implementerats: Dela och Dedikerad.

Delat schema

Detta schema anvÀnds av de flesta anvÀndare. Det kÀnnetecknas av enkelhet och resurshushÄllning: det delade schemat anvÀnder mindre resurser, vilket gör att dess prissÀttning Àr billigare. Enligt detta schema Àr en Nginx-server igÄng pÄ servern, som möjliggör att hantera alla anvÀndarförfrÄgningar, och flera instanser av Apache.

Det delade schemat har utvecklats under lÄng tid: gradvis har vi ÄtgÀrdat brister. Det Àr praktiskt att det kan göras utan att behöva omarbeta kÀllkoden.

Apache & Nginx. Förbundna i en kedja
det delade schemat

Dedikerat schema

Dedicated krÀver mer resurser, dÀrför Àr dess pris högre för kunderna. I Dedicated-schemat körs en separat Apache för varje kund. Resurserna hÀr reserveras exklusivt för kunden. SÄ hÀr fungerar det: pÄ servern finns flera versioner av PHP. Vi stöder versioner 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. SÄledes startas en separat Apache för varje PHP-version.

Apache & Nginx. Förbundna i en kedja
Dedicated-schema

SÀker zon. InstÀllning av zoner i Nginx

Tidigare anvĂ€nde vi mĂ„nga delade minneszoner (zone) för Nginx — en serverblock för en domĂ€n. Denna instĂ€llning krĂ€ver en stor mĂ€ngd resurser eftersom varje webbplats skapar en separat zon. Men i Nginx-instĂ€llningarna Ă€r de flesta webbplatser likartade, sĂ„ de kan placeras i en zon tack vare anvĂ€ndning av direktivet map i modulen ngx_http_map_module, som möjliggör att stĂ€lla in överensstĂ€mmelser. Till exempel har vi en mall för zonen dit vi mĂ„ste skicka variabler: sökvĂ€g till webbplatsen, PHP-version, anvĂ€ndare. Genom detta har omkonfigureringen av Nginx snabbats upp, det vill sĂ€ga reload.

Denna konfiguration har sparat mycket RAM-resurser och pÄskyndat Nginx:s arbete.

Reload kommer inte att gÄ igenom!

I Shared-schemat har vi blivit av med behovet av att ladda om (reload) Apache vid Àndringar i webbplatsinstÀllningarna. Tidigare, nÀr en kund ville lÀgga till en domÀn eller Àndra PHP-version, krÀvdes det en obligatorisk reload av Apache, vilket resulterade i svarsfördröjningar och pÄverkade webbplatsernas prestanda negativt.

Vi har blivit av med reloads genom att skapa dynamiska konfigurationer. Tack vare mpm-itk (Apache-modulen) körs varje process av en separat anvÀndare, vilket ökar sÀkerhetsnivÄn. Denna metod gör det möjligt att överföra anvÀndardata och document_root frÄn Nginx till Apache2. DÀrmed innehÄller inte Apache webbplatskonfigurationerna, utan fÄr dem dynamiskt, och reloads behövs inte lÀngre.

Apache & Nginx. Förbundna i en kedja
Konfiguration av Shared-schema

Men vad med Docker?

MÄnga företag har övergÄtt till system baserade pÄ containrar. Timeweb övervÀger nu möjligheten till en sÄdan övergÄng. SjÀlvklart kan man hitta för- och nackdelar i varje lösning.

Trots de uppenbara fördelarna med containersystemet fÄr anvÀndaren fÀrre resurser. PÄ Timeweb, tack vare den beskrivna driftschemat för hosting, har anvÀndaren ingen begrÀnsning av RAM-minnet. Han fÄr mer resurser Àn i en container. Dessutom kan anvÀndaren ladda fler Apache-moduler.

Timeweb driver cirka 500 000 webbplatser. Vi bÀr ett stort ansvar och gör inga omedelbara, ogrundade förÀndringar i den komplexa arkitekturen. Kombinationen av Apache & Nginx Àr pÄlitlig och beprövad. Vi strÀvar Ä sin sida efter att uppnÄ maximal prestanda genom unika konfigurationer.

För kvalitativ och snabb drift av ett stort antal webbplatser krÀvs en mallbaserad och dynamisk konfiguration av Apache och Nginx. Den gör det enkelt och snabbt att administrera ett stort antal enhetliga servrar.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster