Apache & Nginx. Koblet sammen som en kjede

Hvordan er Apache & Nginx integrert hos Timeweb

For mange selskaper er Nginx + Apache + PHP en veldig vanlig og utbredt kombinasjon, og Timeweb er intet unntak. Det kan imidlertid være interessant og nyttig å forstå hvordan den faktisk er implementert.

Apache & Nginx. Knyttet sammen med én kjede

Bruken av en slik kombinasjon er selvfølgelig drevet av behovene til våre kunder. Både Nginx og Apache spiller spesifikke roller, hver av dem løser en bestemt oppgave.

Hovedinnstillinger Apache. gjøres i konfigurasjonsfilene til selve Apache, mens innstillingene for klientnettsteder skjer gjennom filen .htaccess. .htaccess er en konfigurasjonsfil der klienten selv kan sette opp regler og atferd for nettserveren. Slik innstilling vil spesifikt gjelde hans/hennes nettsted. For eksempel, takket være funksjonaliteten i Apache, kan brukere endre driftsmodusen i løpet av en PHP-versjon fra mod_php til mod_cgi; man kan sette opp omdirigeringer, SEO-optimalisering, brukervennlige URL-er, og noen PHP-limiter.

Nginx brukes som en proxy-server for å omdirigere trafikk til Apache og som nettserveren for levering av statisk innhold. Vi har også utviklet sikkerhetsmoduler for Nginx, som beskytter dataene til våre brukere, for eksempel ved å dele tilgangsrettigheter.

La oss anta at en bruker besøker nettstedet til vår klient. Først kommer brukeren til Nginx, som leverer det statiske innholdet. Dette skjer umiddelbart. Deretter, når det gjelder innlasting av PHP, omdirigerer Nginx forespørselen til Apache. Og Apache sammen med PHP genererer deretter det dynamiske innholdet.

Egenskaper ved kombinasjonen Apache & Nginx hos Timeweb

På vår virtuelle hosting er det implementert 2 hovedskjemaer for drift av Apache & Nginx: Shared og Dedicated.

Shared-skjemaet

Dette skjemaet brukes av de fleste brukere. Det kjennetegnes av enkelhet og ressursbesparelse: Shared-skjemaet bruker færre ressurser, og derfor er prisene lavere. I henhold til dette skjemaet kjører det en Nginx på serveren, som håndterer alle brukerforespørslene, samt flere instanser av Apache.

Shared-skjemaet har gjennomgått langvarige forbedringer: vi har gradvis rettet opp feil. Det er praktisk at det kan gjøres uten behov for å endre kildekoden.

Apache & Nginx. Knyttet sammen med én kjede
Shared-skjemaet

Dedicated-skjemaet

Dedicated krever flere ressurser, så prisen er høyere for kundene. I Dedicated-skjemaet kjøres det en egen Apache for hver kunde. Ressursene her er reservert for kunden og tildeles eksklusivt. Hvordan det fungerer: på serveren finnes det flere PHP-versjoner. Vi støtter versjonene 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Så for hver PHP-versjon kjøres det en egen Apache.

Apache & Nginx. Knyttet sammen med én kjede
Dedicated-skjema

Sikker sone. Konfigurering av soner i Nginx

Tidligere brukte vi mange soner med delt minne (zone) for Nginx – én serverblokk per domene. Denne innstillingen krever mange ressurser, siden det opprettes en egen sone for hver nettside. Men i Nginx-innstillingene er de fleste nettstedene like, så vi klarer å plassere dem i én sone ved hjelp av map-direktivene i modulen ngx_http_map_module, som lar oss definere samsvar. For eksempel har vi en mal for sonen, hvor vi må levere variabler: stien til nettstedet, PHP-versjonen, brukeren. På denne måten ble lesing av Nginx-konfigurasjonen raskere, det vil si rreload.

En slik konfigurasjon har spart mye av det tilgjengelige minnet og akselerert Nginx-arbeidet.

Reload vil ikke gå igjennom!

I Shared-skjemaet har vi kvittet oss med behovet for å laste inn (reload) Apache ved endringer i nettstedinnstillingene. Tidligere, når en kunde ønsket å legge til et domene eller endre PHP-versjonen, krevde dette en obligatorisk reload av Apache, noe som førte til forsinkelser i responsene og negativt påvirket ytelsen til nettstedene.

Vi har kvittet oss med reloader ved å lage dynamiske konfigurasjoner. Takket være mpm-itk (Apache-modulen), kjører hver prosess fra en egen bruker, noe som øker sikkerhetsnivået. Denne metoden gjør det mulig å overføre data om brukeren og hans document_root fra Nginx til Apache2. Dermed inneholder ikke Apache konfigurasjonen av nettstedene, den får dem dynamisk, og reload er ikke lengre nødvendig.

Apache & Nginx. Knyttet sammen med én kjede
Konfigurasjon av Shared-skjema

Hva med Docker?

Mange selskaper har gått over til systemer som er basert på containere. Timeweb vurderer nå muligheten for et slikt skifte. Uansett kan man finne fordeler og ulemper ved hver løsning.

Sammenlignet med ubestridelige fordeler, får brukeren i et containersystem tildelt færre ressurser. I Timeweb, takket være den beskrevne driftsmodellen for hosting, har brukeren ingen begrensning på RAM. Han får mer ressurser enn i containeren. I tillegg kan brukeren laste opp flere Apache-moduler.

Timeweb drifter omkring 500 000 nettsteder. Vi har et stort ansvar og gjør ikke plutselige, ubegrunnede endringer i en kompleks arkitektur. Kombinasjonen av Apache & Nginx er pålitelig og er tidstestet. Vi, på vår side, prøver å oppnå maksimal ytelse gjennom unike konfigurasjoner.

For å sikre effektiv og rask drift av et stort antall nettsteder, må man bruke både statiske og dynamiske konfigurasjoner av Apache og Nginx. Dette gjør det enkelt og raskt å administrere et stort antall ensartede servere.

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster