Під час розміщення кількох сайтів на одному сервері важливо не лише налаштувати Nginx і PHP-FPM, а й правильно розділити права доступу. Якщо всі PHP-скрипти виконуються від імені користувача www-data, помилка або вразливість одного проєкту може створити ризик для інших сайтів.

PHP-FPM дозволяє створювати окремі пули для кожного домену. У такому пулі можна вказати власного системного користувача, групу, порт або Unix-сокет, а також окремі обмеження PHP. Завдяки цьому скрипти кожного сайту виконуються у власному середовищі та не отримують зайвого доступу до файлів сусідніх проєктів.

Стандартні конфігурації пулів зберігаються в каталозі /etc/php5/fpm/pool.d/. Замість використання одного загального файлу www.conf для нового сайту створюється окрема конфігурація, наприклад example.com.conf.

У ній задаються ім’я пулу, адреса для приймання FastCGI-запитів, користувач і група, а також параметри керування процесами. Для кожного сайту необхідно використовувати окремий порт, наприклад 9001, 9002 або 9003.

Після створення нового пулу потрібно змінити параметр fastcgi_pass у конфігурації відповідного віртуального хоста Nginx. У результаті PHP-запити конкретного домену передаватимуться лише до його власного PHP-FPM-пулу.

Додатково для кожного сайту можна встановити індивідуальні обмеження. Параметр open_basedir обмежує каталоги, до яких PHP має доступ, а disable_functions дозволяє вимкнути небезпечні функції, пов’язані із запуском зовнішніх команд і системних процесів.

Замість TCP-з’єднання через адресу 127.0.0.1 і порт можна використовувати Unix-сокет. Для нього задаються власник, група та права доступу. Такий спосіб зменшує зайві мережеві витрати всередині сервера та дозволяє точніше контролювати доступ до PHP-FPM.

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

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