Apache en Nginx. Verbonden door één keten

Hoe de Apache & Nginx combinatie wordt geïmplementeerd in Timeweb

Voor veel bedrijven is Nginx + Apache + PHP een zeer typische en veel voorkomende combinatie, en Timeweb is daarop geen uitzondering. Het kan echter interessant en nuttig zijn om precies te begrijpen hoe het wordt geïmplementeerd.

Apache en Nginx. Verbonden door één keten

Het gebruik van een dergelijke combinatie wordt uiteraard ingegeven door de behoeften van onze klanten. Zowel Nginx als Apache spelen een bijzondere rol, elk lost een specifiek probleem op.

Basis instellingen apache worden uitgevoerd in de configuratiebestanden van Apache zelf, en instellingen voor clientsites vinden plaats via .htaccess-bestand. .htaccess is een configuratiebestand waarin de client zelfstandig de regels en het gedrag van de webserver kan configureren. Deze instelling is specifiek van toepassing op zijn site. Dankzij de Apache-functionaliteit kunnen gebruikers bijvoorbeeld de bedieningsmodus binnen dezelfde PHP-versie wijzigen van mod_php naar mod_cgi; je kunt omleidingen instellen, optimalisatie voor SEO, handige URL, enkele limieten voor PHP.

Nginx gebruikt als proxyserver om verkeer naar Apache om te leiden en als webserver om statische inhoud aan te bieden. Ook voor Nginx hebben we beveiligingsmodules ontwikkeld waarmee we de gegevens van onze gebruikers kunnen beschermen, bijvoorbeeld door toegangsrechten te scheiden.

Stel je voor dat een gebruiker de website van onze klant bezoekt. Eerst gaat de gebruiker naar Nginx, dat statische inhoud serveert. Het gebeurt onmiddellijk. Als het vervolgens gaat om het laden van PHP, stuurt Nginx het verzoek door naar Apache. En Apache genereert samen met PHP al dynamische inhoud.

Kenmerken van de Apache & Nginx-bundel in Timeweb

Onze virtuele hosting implementeert 2 belangrijke besturingssystemen voor Apache & Nginx: Gedeeld en toegewijd.

Gedeeld schema

Dit schema wordt voor de meeste gebruikers gebruikt. Het onderscheidt zich door zijn eenvoud en de intensiteit van de middelen: het gedeelde schema gebruikt minder middelen, waardoor het tarief goedkoper is. Volgens dit schema draait de server één Nginx, waarmee alle gebruikersverzoeken kunnen worden afgehandeld, en verschillende exemplaren van Apache.

De Shared-regeling is al geruime tijd aan het verbeteren: geleidelijk hebben we de tekortkomingen gecorrigeerd. Handig genoeg kan dit worden gedaan zonder dat de broncode hoeft te worden gewijzigd.

Apache en Nginx. Verbonden door één keten
Gedeeld schema

Speciaal schema

Dedicated vereist meer middelen, dus het tarief is duurder voor klanten. In het Dedicated-schema krijgt elke client zijn eigen afzonderlijke Apache. Middelen zijn hier gereserveerd voor de klant, ze worden exclusief toegewezen. Hoe het werkt: Er zijn verschillende versies van PHP op de server. We ondersteunen versies 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Voor elke versie van PHP wordt dus een eigen Apache gelanceerd.

Apache en Nginx. Verbonden door één keten
Speciaal schema

Veilige zone. Zones instellen in Nginx

Voorheen gebruikten we voor Nginx veel gedeelde geheugenzones (zones) - één serverblok per domein. Deze opzet vergt veel middelen, omdat er voor elke site een aparte zone wordt aangemaakt. In de Nginx-instellingen zijn de meeste sites echter van hetzelfde type, zodat ze in één zone kunnen worden geplaatst dankzij het gebruik van kaartrichtlijnen in de module ngx_http_map_module, waarmee u overeenkomsten kunt opgeven. We hebben bijvoorbeeld een zonesjabloon waarin we variabelen moeten opgeven: pad naar de site, PHP-versie, gebruiker. Zo werd het herlezen van de Nginx-configuratie, dat wil zeggen het herladen, versneld.

Deze configuratie bespaarde enorm RAM-bronnen en versnelde Nginx.

Herladen werkt niet!

In het Shared-schema hebben we de noodzaak weggenomen om Apache opnieuw te laden bij het wijzigen van website-instellingen. Als een klant voorheen een domein wilde toevoegen of de PHP-versie wilde wijzigen, was een verplichte herlaadbeurt van Apache vereist, wat leidde tot vertragingen in de reacties en een negatieve invloed had op de prestaties van de site.

We hebben het herladen overbodig gemaakt door dynamische configuraties te maken. Dankzij mpm-itk (Apache-module) draait elk proces als een aparte gebruiker, wat het beveiligingsniveau verhoogt. Met deze methode kunt u gegevens over de gebruiker en zijn document_root overbrengen van Nginx naar Apache2. Apache bevat dus geen siteconfiguraties, het ontvangt deze dynamisch en herladen is niet langer nodig.

Apache en Nginx. Verbonden door één keten
Gedeelde schemaconfiguratie

Hoe zit het met Docker?

Veel bedrijven zijn overgestapt op een containergebaseerd systeem. Timeweb overweegt momenteel de mogelijkheid van een dergelijke transitie. Natuurlijk zijn er aan elke beslissing voor- en nadelen.

Naast onmiskenbare voordelen biedt het containersysteem de gebruiker minder middelen. In Timeweb heeft de gebruiker dankzij het beschreven hostingschema geen beperking in RAM. Het ontvangt meer grondstoffen dan in de container. Bovendien kan de gebruiker meer Apache-modules hebben geladen.

Timeweb beheert ongeveer 500 websites. We nemen een grote verantwoordelijkheid en brengen geen onmiddellijke, ongerechtvaardigde wijzigingen aan in complexe architectuur. De combinatie Apache & Nginx is betrouwbaar en beproefd. Wij proberen op onze beurt maximale prestaties te bereiken door middel van unieke configuraties.

Voor een hoogwaardige en snelle werking van een groot aantal sites moet je gebruik maken van een template en dynamische configuratie van Apache en Nginx. Hiermee kunt u eenvoudig en snel een groot aantal vergelijkbare servers beheren.

Bron: www.habr.com

Voeg een reactie