Vorige week in dit artikel beschreven we hoe de combinatie van Apache en Nginx in Timeweb is opgebouwd. We zijn de lezers zeer dankbaar voor de vragen en actieve discussies! Vandaag bespreken we hoe de beschikbaarheid van verschillende PHP-versies op één server is gerealiseerd en waarom we de veiligheid van de gegevens van onze klanten garanderen.

Virtuele hosting (Shared hosting) houdt in dat er meerdere klantaccounts op één server zijn geplaatst. Op het account van één klant staan doorgaans meerdere websites. Deze websites draaien zowel op kant-en-klare CMS'en (zoals Bitrix) als op op maat gemaakte systemen. Daarom zijn de technische vereisten voor alle systemen anders, zodat binnen één server verschillende PHP-versies moeten worden beheerd.
Als primaire webserver gebruiken we Nginx: deze accepteert alle externe verbindingen en levert statische inhoud. De overige verzoeken worden verder doorgestuurd naar de Apache-webserver. Hier begint de magie: voor elke PHP-versie draait er een aparte instantie van Apache die naar een specifieke poort luistert. Deze poort wordt opgegeven in de virtuele host van de klantenwebsite.
Meer gedetailleerde informatie over de werking van de Shared-structuur is te vinden in .

Shared-structuur
Het is belangrijk op te merken dat we PHP-pakketten voor verschillende versies installeren, omdat gewoonlijk in alle distributies slechts één versie van PHP aanwezig is.
Veiligheid voorop!
Een van de belangrijkste taken van virtual hosting is het waarborgen van de veiligheid van de gegevens van de klant. Verschillende accounts, die zich op één server bevinden, zijn zelfstandig en onafhankelijk. Hoe werkt dit?
De bestanden van de websites worden opgeslagen in de thuisdirectories van de gebruikers zelf, en in de virtuele hosts van de webservers worden de benodigde paden opgegeven. Het is daarbij belangrijk dat de webservers, Nginx en Apache, toegang hebben tot de eindbestanden van een specifieke klant, aangezien de webserver alleen wordt gestart vanuit één gebruiker.
Voor Nginx wordt een beveiligingspatch gebruikt die is ontwikkeld door het Timeweb-team: deze patch wijzigt de gebruiker naar degene die is opgegeven in het configuratiebestand van de webserver.
Bij andere hostingproviders kan dit probleem bijvoorbeeld worden opgelost via manipulaties met uitgebreide rechten van het bestandssysteem (ACL).
Voor Apache wordt de module voor multiprocessen gebruikt . Hiermee kan elke VirtualHost met een eigen gebruikers-ID en groeps-ID worden uitgevoerd.

Op deze manier creëren we, dankzij de hierboven beschreven operaties, een veilige, geïsoleerde omgeving voor elke klant. Tegelijkertijd lossen we ook de schaalbaarheidsproblemen voor Shared hosting op.
Hoe de koppeling van Apache en Nginx is gerealiseerd, kunt u lezen in onze artikel. Daarnaast wordt daar ook een alternatieve configuratie via een Dedicated-configuratie beschreven.
Als u nog vragen heeft voor onze experts, laat het ons weten in de opmerkingen. We proberen alles te beantwoorden of de oplossing van de vraag uitgebreider te beschrijven in toekomstige artikelen.
Bron: habr.com
