Kako je povezan Apache & Nginx u Timeweb-u
Za mnoge kompanije, Nginx + Apache + PHP je vrlo tipična i rasprostranjena kombinacija, a Timeweb nije izuzetak. Međutim, razumeti kako je tačno realizovana može biti zanimljivo i korisno.

Korišćenje ove kombinacije, naravno, diktira potrebe naših klijenata. I Nginx i Apache igraju posebnu ulogu, svaki rešava određeni zadatak.
Osnovne postavke Apache se obavljaju u konfiguracionim datotekama samog Apache-a, dok se podešavanja za klijentske sajtove vrše putem datoteke .htaccess. .htaccess je konfiguraciona datoteka u kojoj klijent može samostalno postaviti pravila i ponašanje veb servera. Ovo podešavanje će se odnositi konkretno na njegov sajt. Na primer, zahvaljujući funkcionalnosti Apache-a, korisnici mogu menjati način rada unutar jedne verzije PHP-a sa mod_php na mod_cgi; moguće je podešavati preusmeravanja, optimizaciju za SEO, prijatne URL-ove, kao i određene limite za PHP.
Nginx se koristi kao proxy server za preusmeravanje saobraćaja na Apache i kao web server za isporuku statičkog sadržaja. Takođe smo za Nginx razvili sigurnosne module koji omogućavaju zaštitu podataka naših korisnika, na primer, raspodelom prava pristupa.
Zamislimo da neki korisnik ulazi na sajt našeg klijenta. Prvo, korisnik dolazi na Nginx, koji isporučuje statički sadržaj. Ovo se događa trenutno. Zatim, kada dođe trenutak za učitavanje PHP-a, Nginx preusmerava zahtev na Apache. I Apache zajedno sa PHP-om generiše dinamički sadržaj.
Osobine povezanosti Apache & Nginx u Timeweb-u
Na našem virtuelnom hostingu implementirane su 2 osnovne sheme rada Apache & Nginx: Shared i Dedicated.
Shema Shared
Ova shema se koristi za većinu korisnika. Odlikuje je jednostavnost i resursna efikasnost: Shared shema koristi manje resursa, zbog čega je i njen tarifni plan jeftiniji. Prema ovoj shemi na serveru je pokrenut jedan Nginx, koji omogućava obradu svih korisničkih zahteva, i nekoliko instanci Apache-a.
Shema Shared je dugo unapređivana: postepeno smo ispravljali nedostatke. Pogodno je što se može realizovati bez potrebe za doradom izvorne kodne osnove.

shema Shared
Shema Dedicated
Dedicated zahteva više resursa, zbog čega je njen tarif skuplji za klijente. U Dedicated shemi za svakog klijenta se pokreće svoj, odvojeni Apache. Resursi se ovde rezervišu za klijenta, oni su ekskluzivni. Kako to funkcioniše: na serveru postoji nekoliko verzija PHP-a. Podržavamo verzije 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Tako se za svaku verziju PHP-a pokreće svoj Apache.

Dedicated shema
Sigurna zona. Konfiguracija zona u Nginxu
Ranije smo za Nginx koristili mnogo zona deljene memorije (zone) — jedan blok servera za jedan domen. Ova konfiguracija zahteva veliko količinu resursa, jer se za svaku stranicu kreira posebna zona. Međutim, u podešavanjima Nginx-a većina stranica je slična, tako da ih uspevamo smestiti u jednu zonu koristeći direktive map u modulu ngx_http_map_module, koji omogućavaju postavljanje veza. Na primer, imamo šablon zone u koju moramo da ubacimo varijable: put do sajta, verziju PHP-a, korisnika. Tako se ubrzalo ponovno učitavanje konfiguracije Nginx-a, tj. reload.
Ovako podešena konfiguracija je značajno uštedela resurse radne memorije i ubrzala rad Nginx-a.
Reload neće proći!
U Shared shemi smo se oslobodili potrebe za ponovnim učitavanjem (reload) Apach-a prilikom promena u podešavanjima stranica. Ranije, kada je jedan klijent želeo da doda domen ili promeni verziju PHP-a, bilo je potrebno obavezno ponovo učitavanje Apach-a, što je dovodilo do kašnjenja u odgovorima i negativno se odražavalo na performanse stranica.
Oslobodili smo se reload-a stvaranjem dinamičkih konfiguracija. Zahvaljujući (modulu Apache), svaki proces se izvršava od posebnog korisnika, što povećava nivo sigurnosti. Ovaj način omogućava prenos podataka o korisniku i njegovom document_root-u iz Nginx-a u Apache2. Tako Apache ne sadrži konfiguracije stranica, on ih dobija dinamički, a reload-i više nisu potrebni.

Konfiguracija Shared sheme
A kako je sa Docker-om?
Mnoge kompanije su prešle na sistem zasnovan na kontejnerima. Timeweb sada razmatra mogućnost takvog prelaska. Naravno, u svakom rešenju se mogu naći prednosti i mane.
Ob obstoječih neizpodbitnih prednostih ima uporabnik v containerskem sistemu na voljo manj virov. V Timewebu, zahvaljujoč opisani shemi delovanja gostovanja, ni omejitve glede pomnilnika. Uporabnik prejme več virov kot v kontejnerju. Poleg tega lahko uporabnik naloži več Apache modulov.
Timeweb zagotavlja delovanje približno 500.000 spletnih strani. Nosimo veliko odgovornost in ne izvajamo takojšnjih, neutemeljenih sprememb v zapleteni arhitekturi. Kombinacija Apache & Nginx je zanesljiva in preizkušena skozi čas. Mi pa se trudimo doseči največjo zmogljivost s pomočjo edinstvenih konfiguracij.
Za kakovostno in hitro delovanje velikega števila spletnih strani je potrebno uporabiti tako predlogo kot tudi dinamično konfiguracijo Apache in Nginx. To omogoča enostavno in hitro upravljanje velikega števila podobnih strežnikov.
Izvor: habr.com
