Минулого тижня в
Віртуальний хостинг (Shared-хостинг) передбачає, що на одному сервері розміщено безліч облікових записів клієнтів. На обліковому записі одного клієнта, як правило, знаходиться кілька сайтів. Сайти працюють як на готових CMS (наприклад Bitrix), так і на кастомних. Таким чином, технічні вимоги у всіх систем є різними, тому в рамках одного сервера необхідно керувати кількома версіями PHP.
Як основний веб-сервер ми використовуємо Nginx: він приймає всі підключення ззовні і віддає статичний контент. Інші запити ми проксуємо далі, на веб-сервер Apache. Тут і починається магія: для кожної версії PHP запущено окремий екземпляр Apache, який слухає певний порт. Цей порт прописується у віртуальному хості клієнтського сайту.
Про роботу Shared-схеми можна прочитати детальніше в
Shared-схема
Важливо відзначити, що ми ставимо пакети PHP під різні версії, тому що зазвичай у всіх дистрибутивах лежить лише одна версія PHP.
Безпека перш всього!
Одне з головних завдань віртуального хостингу – забезпечити безпеку даних клієнта. Різні облікові записи, перебуваючи на одному сервері, самостійні і незалежні. Як це працює?
Файли сайтів зберігаються в домашніх каталогах самих користувачів, а у віртуальному хості веб-серверів вказуються потрібні шляхи. При цьому важливо, щоб веб-сервери, Nginx та Аpache, отримали доступ до кінцевих файлів певного клієнта, оскільки веб-сервер запускається лише від одного користувача.
Для Nginx використовується патч безпеки, розроблений командою Timeweb: цей патч змінює користувача того, який вказаний в конфігураційному файлі веб-сервера.
В інших хостинг-провайдерів цю проблему можна вирішити, наприклад, через маніпуляції з розширеними правами файлової системи (ACL).
Для роботи Apache використовується модуль мультипроцесингу
Таким чином, завдяки операціям, описаним вище, ми отримуємо безпечне ізольоване середовище для кожного клієнта. При цьому ми вирішуємо завдання масштабування для Shared-хостингу.
Як реалізована зв'язка Apache і Nginx, можна прочитати
Якщо у вас залишилися питання до наших експертів, пишіть у коментарях. Постараємося на все відповісти або описати рішення задачі докладніше в наступних статтях.
Джерело: habr.com