Apache & Nginx. Verbonden in één keten

Hoe de combinatie van Apache & Nginx werkt bij Timeweb

Voor veel bedrijven is Nginx + Apache + PHP een zeer gangbare en populaire combinatie, en Timeweb is hierin geen uitzondering. Het kan echter interessant en nuttig zijn om te begrijpen hoe deze specifiek is geïmplementeerd.

Apache & Nginx. Verbindend in één keten

Het gebruik van zo'n combinatie is vanzelfsprekend gedreven door de behoeften van onze klanten. Zowel Nginx als Apache spelen een bijzondere rol, waarbij elk een specifieke taak vervult.

Belangrijke instellingen Apache worden uitgevoerd in de configuratiebestanden van Apache zelf, terwijl de instellingen voor klantensites worden gedaan via het .htaccess-bestand. .htaccess is een configuratiebestand waarin de klant zelf de regels en het gedrag van de webserver kan instellen. Deze configuratie geldt specifiek voor zijn of haar site. Bijvoorbeeld, dankzij de functionaliteit van Apache kunnen gebruikers de werkwijze binnen één versie van PHP van mod_php naar mod_cgi wijzigen; ze kunnen redirects, SEO-optimalisatie, schone URL's en bepaalde limieten voor PHP instellen.

Nginx wordt gebruikt als proxyserver voor het doorsturen van verkeer naar Apache en als webserver voor het leveren van statische inhoud. Voor Nginx hebben we ook beveiligingsmodules ontwikkeld die de gegevens van onze gebruikers beschermen, bijvoorbeeld door de toegangsrechten te splitsen.

Stel je voor dat een gebruiker de site van onze klant bezoekt. Eerst komt de gebruiker op Nginx, die de statische inhoud levert. Dit gebeurt razendsnel. Wanneer het echter aankomt op het laden van PHP, leidt Nginx het verzoek door naar Apache. En Apache, samen met PHP, genereert de dynamische inhoud.

Kenmerken van de combinatie Apache & Nginx bij Timeweb

Op onze virtuele hosting zijn 2 hoofdwerkingsschema's voor Apache & Nginx geïmplementeerd: Shared en Dedicated.

Schema Shared

Dit schema wordt gebruikt door de meeste gebruikers. Het kenmerkt zich door eenvoud en efficiëntie: het Shared-schema gebruikt minder bronnen, waardoor het tarief voordeliger is. Volgens dit schema is er één Nginx op de server dat alle gebruikersverzoeken afhandelt en meerdere instanties van Apache.

Het Shared-schema is lange tijd verbeterd: geleidelijk aan hebben we tekortkomingen gecorrigeerd. Het is handig dat het kan worden gerealiseerd zonder dat de broncode hoeft te worden aangepast.

Apache & Nginx. Verbindend in één keten
schema Shared

Schema Dedicated

Dedicated vereist meer middelen, waardoor het tarief duurder is voor klanten. In het Dedicated-schema wordt voor elke klant een aparte Apache opgestart. De middelen worden hier gereserveerd voor de klant en zijn exclusief toegewezen. Hoe het werkt: op de server zijn er verschillende versies van PHP. We ondersteunen versies 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Voor elke versie van PHP wordt een eigen Apache gestart.

Apache & Nginx. Verbindend in één keten
Dedicated-schema

Veilige zone. Instelling van zones in Nginx

Voorheen gebruikten we veel gedeelde geheugen zones (zone) voor Nginx — één serverblok per domein. Deze instelling vereist veel middelen, omdat voor elke website een aparte zone wordt aangemaakt. Echter, in de instellingen van Nginx zijn de meeste websites soortgelijk, waardoor ze in één zone kunnen worden geplaatst door gebruik te maken van de map-directieven in de module ngx_http_map_module, waarmee overeenkomsten kunnen worden vastgesteld. Bijvoorbeeld, we hebben een sjabloonzone waarin we variabelen moeten leveren: pad naar de site, PHP-versie, gebruiker. Op deze manier is het herlezen van de Nginx-configuratie versneld, dat wil zeggen het reload.

Een dergelijke configuratie heeft sterk middelen van het werkgeheugen bespaard en de werking van Nginx versneld.

Herlaad gaat niet door!

In het Shared-schema hebben we de noodzaak om Apache opnieuw te laden (reload) bij wijzigingen in de instellingen van websites verwijderd. Voorheen vereiste het toevoegen van een domein of het wijzigen van de PHP-versie door een klant altijd een herlaad van Apache, wat leidde tot vertragingen in de reacties en een negatieve invloed had op de prestaties van de websites.

We hebben herlaadprocedures geëlimineerd door dynamische configuraties te creëren. Dankzij mpm-itk (Apache-module) wordt elk proces uitgevoerd door een aparte gebruiker, wat het beveiligingsniveau verhoogt. Deze manier maakt het mogelijk om gegevens over de gebruiker en zijn document_root van Nginx naar Apache2 te sturen. Op deze manier bevat Apache geen websites-configuraties, hij ontvangt deze dynamisch, en herlaadprocedures zijn niet langer nodig.

Apache & Nginx. Verbindend in één keten
Configuratie van het Shared-schema

Maar hoe zit het met Docker?

Veel bedrijven zijn overgestapt op op containers gebaseerde systemen. Timeweb overweegt momenteel de mogelijkheid van een dergelijke overstap. Uiteraard zijn er voor elk besluit voor- en nadelen te vinden.

Naast de onbetwistbare voordelen biedt het containersysteem de gebruiker minder middelen. Bij Timeweb is er dankzij het beschreven hostingmodel geen beperking op het geheugen. De gebruiker krijgt meer middelen dan in een container. Bovendien kan de gebruiker meer Apache-modules laten laden.

Timeweb ondersteunt ongeveer 500.000 websites. We dragen een grote verantwoordelijkheid en voeren geen onmiddellijke, onrechtvaardige wijzigingen door in de complexe architectuur. De combinatie van Apache & Nginx is betrouwbaar en door de tijd getest. Wij streven ernaar om maximale prestaties te bereiken met unieke configuraties.

Voor een kwalitatieve en snelle werking van een groot aantal websites is het noodzakelijk om de sjabloon- en dynamische configuratie van Apache en Nginx te gebruiken. Hiermee kunnen we eenvoudig en snel een groot aantal uniforme servers beheren.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster