Apache og Nginx. Sammenkoblet med en kjede

Hvordan Apache & Nginx-kombinasjonen er implementert i Timeweb

For mange selskaper er Nginx + Apache + PHP en veldig typisk og vanlig kombinasjon, og Timeweb er intet unntak. Det kan imidlertid være interessant og nyttig å forstå nøyaktig hvordan det implementeres.

Apache og Nginx. Sammenkoblet med en kjede

Bruken av en slik kombinasjon er selvfølgelig diktert av våre kunders behov. Både Nginx og Apache spiller en spesiell rolle, hver løser et spesifikt problem.

grunnleggende innstillinger Apache utføres i konfigurasjonsfilene til selve Apache, og innstillinger for klientnettsteder skjer gjennom .htaccess-fil. .htaccess er en konfigurasjonsfil der klienten uavhengig kan konfigurere reglene og oppførselen til webserveren. Denne innstillingen gjelder spesifikt for nettstedet hans. For eksempel, takket være Apache-funksjonaliteten, kan brukere endre driftsmodus i samme PHP-versjon fra mod_php til mod_cgi; du kan sette opp omdirigeringer, optimalisering for SEO, praktisk URL, noen grenser for PHP.

Nginx brukes som en proxy-server for å omdirigere trafikk til Apache og som en webserver for å vise statisk innhold. Vi har også utviklet sikkerhetsmoduler for Nginx som lar oss beskytte brukernes data, for eksempel for å skille tilgangsrettigheter.

La oss forestille oss at en bruker besøker vår klients nettside. Først kommer brukeren til Nginx, som serverer statisk innhold. Det skjer umiddelbart. Deretter, når det gjelder å laste PHP, videresender Nginx forespørselen til Apache. Og Apache, sammen med PHP, genererer allerede dynamisk innhold.

Funksjoner i Apache & Nginx-pakken i Timeweb

Vår virtuelle hosting implementerer 2 hoveddriftsopplegg for Apache og Nginx: Delt og dedikert.

Delt opplegg

Denne ordningen brukes for de fleste brukere. Den utmerker seg ved sin enkelhet og ressursintensitet: Delt-ordningen bruker færre ressurser, og det er grunnen til at tariffen er billigere. I henhold til denne ordningen kjører serveren en Nginx, som lar den betjene alle brukerforespørsler og flere forekomster av Apache.

Delt-ordningen har vært i bedring i lang tid: gradvis rettet vi opp manglene. Beleilig kan det gjøres uten å måtte endre kildekoden.

Apache og Nginx. Sammenkoblet med en kjede
Delt opplegg

Dedikert opplegg

Dedikert krever mer ressurser, så tariffen er dyrere for kundene. I Dedikert-ordningen får hver klient sin egen separate Apache. Ressurser her er forbeholdt klienten, de tildeles eksklusivt. Slik fungerer det: Det er flere versjoner av PHP på serveren. Vi støtter versjoner 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Så for hver versjon av PHP lanseres sin egen Apache.

Apache og Nginx. Sammenkoblet med en kjede
Dedikert opplegg

Sikker sone. Sette opp soner i Nginx

Tidligere, for Nginx, brukte vi mange delte minnesoner (soner) - en serverblokk per domene. Dette oppsettet krever mye ressurser, siden det opprettes en egen sone for hvert nettsted. Men i Nginx-innstillingene er de fleste nettsteder av samme type, så de kan plasseres i én sone takket være bruken av kartdirektiver i modulen ngx_http_map_module, som lar deg spesifisere korrespondanser. For eksempel har vi en sonemal der vi må oppgi variabler: bane til nettstedet, PHP-versjon, bruker. Dermed ble gjenlesingen av Nginx-konfigurasjonen, det vil si omlastingen, fremskyndet.

Denne konfigurasjonen sparte mye RAM-ressurser og satte fart på Nginx.

Reload vil ikke fungere!

I Shared-ordningen ble vi kvitt behovet for å laste Apache på nytt når vi endret nettstedinnstillinger. Tidligere, når en klient ønsket å legge til et domene eller endre PHP-versjonen, var en obligatorisk omlasting av Apache nødvendig, noe som førte til forsinkelser i svar og negativt påvirket nettstedets ytelse.

Vi ble kvitt reloads ved å lage dynamiske konfigurasjoner. Takk til mpm-itk (Apache-modul), hver prosess kjører som en separat bruker, noe som øker sikkerhetsnivået. Denne metoden lar deg overføre data om brukeren og hans document_root fra Nginx til Apache2. Derfor inneholder ikke Apache nettstedkonfigurasjoner, den mottar dem dynamisk, og omlasting er ikke lenger nødvendig.

Apache og Nginx. Sammenkoblet med en kjede
Delt skjemakonfigurasjon

Hva med Docker?

Mange bedrifter har gått over til et containerbasert system. Timeweb vurderer for tiden muligheten for en slik overgang. Selvfølgelig er det fordeler og ulemper med enhver beslutning.

Sammen med ubestridelige fordeler gir containersystemet brukeren færre ressurser. I Timeweb, takket være den beskrevne hosting-ordningen, har brukeren ingen begrensning i RAM. Den mottar flere ressurser enn i containeren. I tillegg kan brukeren ha flere Apache-moduler lastet.

Timeweb driver rundt 500 000 nettsteder. Vi tar stort ansvar og gjør ikke umiddelbare, uberettigede endringer i kompleks arkitektur. Apache & Nginx-kombinasjonen er pålitelig og tidstestet. Vi prøver på sin side å oppnå maksimal ytelse gjennom unike konfigurasjoner.

For høy kvalitet og rask drift av et stort antall nettsteder, må du bruke en mal og dynamisk konfigurasjon av Apache og Nginx. Den lar deg enkelt og raskt administrere et stort antall lignende servere.

Kilde: www.habr.com

Legg til en kommentar