Hvordan er forbindelsen mellem Apache & Nginx realiseret i Timeweb
For mange virksomheder er Nginx + Apache + PHP en meget typisk og udbredt kombination, og Timeweb er ingen undtagelse. Det kan dog være interessant og nyttigt at forstå, hvordan den præcist er implementeret.

Brugen af en sådan kombination er selvfølgelig dikteret af vores kunders behov. Både Nginx og Apache spiller en særlig rolle, da hver af dem løser specifikke opgaver.
Grundlæggende indstillinger «Ressourcen kan være sårbar overfor DROWN, hvis dens nøgler bruges af en ekstern server med SSLv2, for eksempel en mailserver», bemærker lederen af udviklingsafdelingen udføres i konfigurationsfilerne af selve Apache, mens indstillingerne for kundernes websteder sker gennem filen .htaccess. .htaccess er en konfigurationsfil, hvor kunden selv kan tilpasse reglerne og adfærden af webserveren. Denne opsætning vil specifikt gælde for deres websted. For eksempel, takket være funktionerne i Apache, kan brugerne ændre driftsmodus inden for en enkelt PHP-version fra mod_php til mod_cgi; det er muligt at indstille omdirigeringer, optimering til SEO, brugervenlige URL'er og nogle grænser for PHP.
Nginx anvendes som en proxyserver til at videresende trafik til Apache og som webserveren til levering af statisk indhold. Desuden har vi udviklet sikkerhedsmoduler til Nginx, som beskytter vores brugeres data, for eksempel ved at adskille rettigheder.
Forestil dig, at en bruger besøger vores kundes websted. Først kommer brugeren til Nginx, som leverer statisk indhold. Dette sker øjeblikkeligt. Derefter, når det kommer til at indlæse PHP, videresender Nginx anmodningen til Apache. Og Apache sammen med PHP genererer allerede det dynamiske indhold.
Egenskaber ved forbindelsen mellem Apache & Nginx i Timeweb
På vores virtuelle hosting-tjenester er der implementeret 2 grundlæggende arbejdsmodeller for Apache & Nginx: Shared og Dedicated.
Shared-model
Denne model bruges af de fleste brugere. Den er kendetegnet ved sin enkelhed og ressourceforbrug: Shared-modellen bruger færre ressourcer, og derfor er dens takster billigere. I henhold til denne model kører der en Nginx-server på serveren, som håndterer alle brugerforespørgsler, samt flere instanser af Apache.
Shared-modellen er blevet forbedret over lang tid: gradvist har vi rettet fejl. Det er praktisk, at den kan laves uden behov for at ændre kildekoden.

Shared model
Dedicated-model
Dedicated kræver flere ressourcer, derfor koster dens tarif mere for kunderne. I Dedicated-schemet opsættes der en separat Apache for hver kunde. Ressourcerne reserveres her til kunden eksklusivt. Sådan fungerer det: serveren har flere versioner af PHP. Vi understøtter versioner 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Så for hver version af PHP kører der en egen Apache.

Dedicated-schema
Sikker zone. Konfiguration af zoner i Nginx
Tidligere brugte vi mange zoner af delt hukommelse (zone) til Nginx — en serverblok per domæne. Denne opsætning kræver mange ressourcer, da der oprettes en separat zone for hvert websted. Men i Nginx-indstillingerne er de fleste websteder ensartede, så vi har kunnet placere dem i en zone ved brug af map-direktiver i modulet ngx_http_map_module, som giver mulighed for at definere korrespondancer. For eksempel har vi en skabelon til zonen, hvor vi skal levere variabler: stien til webstedet, PHP-versionen, brugeren. Dette har således fremskyndet indlæsningen af Nginx-konfigurationen, det vil sige reload.
En sådan konfiguration har betydeligt sparet ressourcerne i det operative hukommelse og forbedret Nginx's ydeevne.
Reload vil ikke finde sted!
I Shared-schemaet har vi fjernet behovet for at genstarte (reload) Apache ved ændringer i webstedernes indstillinger. Tidligere, når en kunde ønskede at tilføje et domæne eller ændre PHP-versionen, krævede det en obligatorisk reload af Apache, hvilket førte til forsinkelser i svarene og havde en negativ indvirkning på webstedernes ydeevne.
Vi har fjernet reloadene ved at skabe dynamiske konfigurationer. Takket være (Apache-modulet) kører hver proces som en separat bruger, hvilket øger sikkerheden. Denne metode gør det muligt at overføre data om brugeren og deres document_root fra Nginx til Apache2. Derved indeholder Apache ikke konfigurationerne for webstederne, han får dem dynamisk, og reloads er ikke længere nødvendige.

Konfigurationen af Shared-scheme
Hvad med Docker?
Mange virksomheder er gået over til et system baseret på containere. Timeweb overvejer nu muligheden for en sådan overgang. Uden tvivl kan der findes både fordele og ulemper ved hver løsning.
Sammen med de ubestridelige fordele, har brugeren mindre ressourcer i containersystemet. Hos Timeweb er der ingen grænser for RAM takket være den beskrevne hostingmodel. Brugeren får flere ressourcer end i containeren. Desuden kan brugeren have flere Apache-moduler indlæst.
Timeweb drifter omkring 500.000 hjemmesider. Vi bærer et stort ansvar og foretager ikke øjeblikkelige, ubegrundede ændringer i den komplekse arkitektur. Kombinationen af Apache & Nginx er pålidelig og har bevist sin værdi over tid. Vi tilstræber maksimale ydelser gennem unikke konfigurationer.
For at sikre kvalitet og hurtig drift af et stort antal hjemmesider er det nødvendigt at anvende både skabelonbaserede og dynamiske konfigurationer af Apache og Nginx. Dette muliggør enkel og hurtig administration af mange ensartede servere.
Kilde: habr.com
