Apache og Nginx. Forbundet med en kæde

Hvordan Apache & Nginx-kombinationen er implementeret i Timeweb

For mange virksomheder er Nginx + Apache + PHP en meget typisk og almindelig kombination, og Timeweb er ingen undtagelse. Det kan dog være interessant og nyttigt at forstå præcis, hvordan det implementeres.

Apache og Nginx. Forbundet med en kæde

Brugen af ​​en sådan kombination er naturligvis dikteret af vores kunders behov. Både Nginx og Apache spiller en særlig rolle, hver løser et specifikt problem.

grundlæggende indstillinger Apache udføres i selve Apaches konfigurationsfiler, og indstillinger for klientwebsteder sker igennem .htaccess-fil. .htaccess er en konfigurationsfil, hvor klienten selvstændigt kan konfigurere reglerne og adfærden for webserveren. Denne indstilling gælder specifikt for hans websted. For eksempel, takket være Apache-funktionaliteten, kan brugere ændre driftstilstanden i den samme PHP-version fra mod_php til mod_cgi; du kan opsætte omdirigeringer, optimering til SEO, praktisk URL, nogle grænser for PHP.

Nginx bruges som proxyserver til at omdirigere trafik til Apache og som webserver til at levere statisk indhold. Vi har også udviklet sikkerhedsmoduler til Nginx, der giver os mulighed for at beskytte vores brugeres data, for eksempel for at adskille adgangsrettigheder.

Lad os forestille os, at en bruger besøger vores kundes hjemmeside. Først kommer brugeren til Nginx, som serverer statisk indhold. Det sker øjeblikkeligt. Derefter, når det kommer til at indlæse PHP, videresender Nginx anmodningen til Apache. Og Apache genererer allerede sammen med PHP dynamisk indhold.

Funktioner i Apache & Nginx-pakken i Timeweb

Vores virtuelle hosting implementerer 2 hoveddriftsordninger for Apache & Nginx: Delt og dedikeret.

Fælles ordning

Denne ordning bruges til de fleste brugere. Den er kendetegnet ved sin enkelhed og ressourceintensitet: Shared-ordningen bruger færre ressourcer, hvorfor dens takst er billigere. Ifølge denne ordning kører serveren én Nginx, som gør det muligt for den at betjene alle brugeranmodninger og flere forekomster af Apache.

Shared-ordningen har været i bedring i lang tid: gradvist korrigerede vi manglerne. Det kan bekvemt gøres uden behov for at ændre kildekoden.

Apache og Nginx. Forbundet med en kæde
Fælles ordning

Dedikeret ordning

Dedikeret kræver flere ressourcer, så dens takst er dyrere for kunderne. I den dedikerede ordning får hver klient sin egen separate Apache. Ressourcer her er forbeholdt kunden, de tildeles udelukkende. Sådan fungerer det: Der er flere versioner af PHP på serveren. Vi understøtter version 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Så for hver version af PHP lanceres sin egen Apache.

Apache og Nginx. Forbundet med en kæde
Dedikeret ordning

Sikker zone. Opsætning af zoner i Nginx

Tidligere brugte vi til Nginx mange delte hukommelseszoner (zoner) - en serverblok pr. domæne. Denne opsætning kræver mange ressourcer, da der oprettes en separat zone for hver side. Men i Nginx-indstillingerne er de fleste steder af samme type, så de kan placeres i én zone takket være brugen af ​​kortdirektiver i modulet ngx_http_map_modul, som giver dig mulighed for at angive korrespondancer. For eksempel har vi en zoneskabelon, hvori vi skal levere variabler: sti til webstedet, PHP-version, bruger. Således blev genlæsningen af ​​Nginx-konfigurationen, det vil sige genindlæsningen, fremskyndet.

Denne konfiguration sparede i høj grad RAM-ressourcer og fremskyndede Nginx.

Genindlæsning virker ikke!

I Shared-ordningen slap vi for behovet for at genindlæse Apache, når du ændrede webstedsindstillinger. Tidligere, når en klient ønskede at tilføje et domæne eller ændre PHP-versionen, var en obligatorisk genindlæsning af Apache påkrævet, hvilket førte til forsinkelser i svarene og påvirkede webstedets ydeevne negativt.

Vi slap af med genindlæsninger ved at oprette dynamiske konfigurationer. Tak til mpm-itk (Apache-modul), hver proces kører som en separat bruger, hvilket øger sikkerhedsniveauet. Denne metode giver dig mulighed for at overføre data om brugeren og hans document_root fra Nginx til Apache2. Apache indeholder således ikke webstedskonfigurationer, den modtager dem dynamisk, og genindlæsninger er ikke længere påkrævet.

Apache og Nginx. Forbundet med en kæde
Konfiguration af delt skema

Hvad med Docker?

Mange virksomheder er gået over til et containerbaseret system. Timeweb overvejer i øjeblikket muligheden for en sådan overgang. Selvfølgelig er der fordele og ulemper ved enhver beslutning.

Sammen med ubestridelige fordele giver containersystemet brugeren færre ressourcer. I Timeweb har brugeren, takket være det beskrevne hostingskema, ingen begrænsning i RAM. Den modtager flere ressourcer end i containeren. Derudover kan brugeren have flere Apache-moduler indlæst.

Timeweb driver omkring 500 websteder. Vi tager et stort ansvar og laver ikke øjeblikkelige, uberettigede ændringer i kompleks arkitektur. Apache & Nginx kombinationen er pålidelig og tidstestet. Vi forsøger til gengæld at opnå maksimal ydeevne gennem unikke konfigurationer.

For høj kvalitet og hurtig drift af et stort antal websteder skal du bruge en skabelon og dynamisk konfiguration af Apache og Nginx. Det giver dig mulighed for nemt og hurtigt at administrere et stort antal lignende servere.

Kilde: www.habr.com

Tilføj en kommentar