Миналата седмица в тази статия описахме как е изградена връзката между Apache и Nginx в Timeweb. Изключително сме благодарни на читателите за въпросите и активната дискусия! Днес разказваме как е реализирана наличността на няколко версии на PHP на един сървър и защо гарантираме сигурността на данните на нашите клиенти.

Виртуален хостинг (Споделен хостинг) предполага, че на един сървър са разположени множество клиентски акаунти. На акаунта на един клиент обикновено се намират няколко сайта. Сайтовете работят както на готови CMS (например, Bitrix), така и на персонализирани. По този начин, техническите изисквания при всички системи са различни, затова в рамките на един сървър е необходимо да се управляват няколко версии на PHP.
Като основен уеб сървър използваме Nginx: той приема всички входящи връзки и предоставя статично съдържание. Останалите заявки проксирваме по-нататък към уеб сървър Apache. Тук започва магията: за всяка версия на PHP е стартиран отделен екземпляр на Apache, който слуша определен порт. Този порт е зададен във виртуалния хост на клиентския сайт.
За работата на Shared схемата можете да прочетете по-подробно в .

Shared схема
Важно е да се отбележи, че инсталираме пакети PHP за различни версии, тъй като обикновено в всички дистрибуции има само една версия на PHP.
Сигурността на първо място!
Една от основните задачи на виртуалния хостинг е да осигури сигурността на данните на клиента. Различни акаунти, намиращи се на един сървър, са самостоятелни и независими. Как работи това?
Файловете на сайтовете се съ хранят в домашните каталози на самите потребители, а във виртуалния хост на уеб сървърите се задават нужните пътища. Важно е обаче уеб сървърите, Nginx и Apache, да получат достъп до крайния файл на определен клиент, тъй като уеб сървърът се стартира само от един потребител.
За Nginx се използва патч за сигурност, разработен от екипа на Timeweb: този патч променя потребителя на този, който е посочен в конфигурационния файл на уеб сървъра.
При други хостинг доставчици този проблем може да бъде решен, например, чрез манипулации с разширените права на файловата система (ACL).
За работа на Apache се използва модул за многопроцесорност . Той позволява да се стартира всеки VirtualHost с собствен идентификатор на потребителя и ID на групата.

По този начин, благодарение на описаните по-горе операции, получаваме безопасна изолирана среда за всеки клиент. С това решаваме и проблемите с мащабирането за споделен хостинг.
Как е реализирана връзката между Apache и Nginx, можете да прочетете в нашата статия. Освен това, там също така е описана алтернативна конфигурация чрез Dedicated-схема.
Ако имате въпроси към нашите експерти, пишете в коментарите. Ще се опитаме да отговорим на всичко или да опишем решението на проблема по-подробно в следващите статии.
Източник: habr.com
