Apache & Nginx. Пов'язані одним ланцюгом (2 частина)

Минулого тижня в першій частині цієї статті ми описали, як побудована зв'язка Apache та Nginx у Timeweb. Ми дуже вдячні читачам за питання та активне обговорення! Сьогодні розповідаємо, як реалізовано доступність кількох версій PHP на одному сервері і чому ми гарантуємо безпеку даних нашим клієнтам.

Apache & Nginx. Пов'язані одним ланцюгом (2 частина)
Віртуальний хостинг (Shared-хостинг) передбачає, що на одному сервері розміщено безліч облікових записів клієнтів. На обліковому записі одного клієнта, як правило, знаходиться кілька сайтів. Сайти працюють як на готових CMS (наприклад Bitrix), так і на кастомних. Таким чином, технічні вимоги у всіх систем є різними, тому в рамках одного сервера необхідно керувати кількома версіями PHP.

Як основний веб-сервер ми використовуємо Nginx: він приймає всі підключення ззовні і віддає статичний контент. Інші запити ми проксуємо далі, на веб-сервер Apache. Тут і починається магія: для кожної версії PHP запущено окремий екземпляр Apache, який слухає певний порт. Цей порт прописується у віртуальному хості клієнтського сайту.

Про роботу Shared-схеми можна прочитати детальніше в першій частині статті.

Apache & Nginx. Пов'язані одним ланцюгом (2 частина)
Shared-схема

Важливо відзначити, що ми ставимо пакети PHP під різні версії, тому що зазвичай у всіх дистрибутивах лежить лише одна версія PHP.

Безпека перш всього!

Одне з головних завдань віртуального хостингу – забезпечити безпеку даних клієнта. Різні облікові записи, перебуваючи на одному сервері, самостійні і незалежні. Як це працює?

Файли сайтів зберігаються в домашніх каталогах самих користувачів, а у віртуальному хості веб-серверів вказуються потрібні шляхи. При цьому важливо, щоб веб-сервери, Nginx та Аpache, отримали доступ до кінцевих файлів певного клієнта, оскільки веб-сервер запускається лише від одного користувача.

Для Nginx використовується патч безпеки, розроблений командою Timeweb: цей патч змінює користувача того, який вказаний в конфігураційному файлі веб-сервера.

В інших хостинг-провайдерів цю проблему можна вирішити, наприклад, через маніпуляції з розширеними правами файлової системи (ACL).

Для роботи Apache використовується модуль мультипроцесингу mpm-itk. Він дозволяє запускати кожен VirtualHost із власним ідентифікатором користувача та ID групи.
Apache & Nginx. Пов'язані одним ланцюгом (2 частина)
Таким чином, завдяки операціям, описаним вище, ми отримуємо безпечне ізольоване середовище для кожного клієнта. При цьому ми вирішуємо завдання масштабування для Shared-хостингу.

Як реалізована зв'язка Apache і Nginx, можна прочитати першій частині нашої статті. Крім того, там же описано альтернативну конфігурацію через Dedicated-схему.

Якщо у вас залишилися питання до наших експертів, пишіть у коментарях. Постараємося на все відповісти або описати рішення задачі докладніше в наступних статтях.

Джерело: habr.com

Додати коментар або відгук