Налаштування серверної зв'язки nginx apache fastcgi

У попередній статті "Установка та налаштування веб сервера Nginx в якості проксірующего фронтендів до Apache", було розглянуто простий варіант установки і використання Nginx. з настройками за замовчуванням, як проксірующего сервера, з сервером Apache в якості проксіркемого бакенда.

В даному матеріалі хотілося-б розповісти про більш складному варіанті установки і настройки Nginx. для побудови зв'язки Nginx Apache FastCGI. Для організації FastCGI сервера, буде використана утиліти, spawn-fcgi. яка раніше входила до складу веб сервера lighttpd. а тепер виділена в окремий порт.

Схема роботи зв'язки Nginx - Apache - FastCGI. виглядає наступним чином:

Налаштування серверної зв'язки nginx apache fastcgi

  • Всі статичні запити (HTML файли, картинки), будуть оброблені веб сервером Nginx самостійно, після чого результат буде виданий клієнту;
  • Запити до CGI і Perl (файли CGI, PL) скриптів, будуть відправлені на обробку Apache. після обробки, результат буде переданий в Nginx і відданий клієнту;
  • Всі запити до скриптів PHP, будуть перенаправлені на сервер FastCGI, після обробки, результат знову-ж буде повернуто в Nginx і виданий клієнту;

Отже, що ми маємо: операційна система FreeBSD 7.1 STABLE (платформа amd64), встановлений веб сервер Apache / 2.2.9. Установка Nginx проводилася з наступними опціями:

PHP з підтримкою FastCGI інтерфейсу

Налаштування сервера Nginx. зробимо трохи пізніше, спочатку налаштуємо FastCGI сервер, встановивши все необхідне. Що взагалі таке, FastCGI. У загальному розумінні, це протокол взаємодії, між веб сервером і додатком, незалежний від мови додатка і є куди більш продуктивним і безпечним, ніж звичайний CGI. Якщо коротко, звичайну CGI програму, веб сервера, доводиться запускати на кожен запит, в той час як FastCGI. постійно тримає запущений процес, який і обслуговує приходять йому запити. Крім того веб сервер, зв'язується з FastCGI сервером, через так званий "Unix domain socket" або через TCP / IP, на відміну від звичайного CGI, який взаємодіє з сервером через стандартний ввід / вивід, що дає можливість мати у своєму розпорядженні FastCGI сервер, не тільки в рамках однієї машини, а й взагалі де завгодно в мережі.

У контексті даного матеріалу, мова йде про мову PHP, зібраному з підтримкою FastCGI і запущеному з допомогою спеціального додатку.

Для підтримки даного режиму роботи, PHP, повинен бути скомпільовано з відповідними опціями і мати необхідний бінарник (файл, що запускається, за замовчуванням php-cgi.) Наступні опції використовуються для складання PHP з підтримкою FasCGI і забезпечення необхідного рівня безпеки:

--enable-fastcgi
--enable-force-cgi-redirect
--enable-discard-path

Решта опцій ставите в залежності від ваших потреб.

Подивитися опції, з якими зібрано PHP, можна так:

Установка і настройка spawn-fcgi для запуску FastCGI Сарвера PHP

Процес побудови та встановлення триває менше хвилини. По завершенню, буде створено кілька файлів:

/ Usr / local / bin / spawn-fcgi # запускається файл програми
/usr/local/etc/rc.d/spawn-fcgi # Стартовий скрипт, для запуску FastCGI сервера

Як правило я використовую Unix Socket для зв'язку сервера Nginx з FastCGI сервером (хоча в разі виникнення проблем, можна використовувати TCP / IP), тому йдемо правити стартовий скрипт, привівши його змінні до такого виду:

Не забуваємо додати рядок spawn_fcgi_enable = "YES" у стартовий скрипт /etc/rc.conf. для запуску FastCGI сервера при старті системи.

Пробуємо запустити spawn-fcgi:

FastCGI сервер готовий до роботи

Налаштування веб сервера Apache

Налаштування веб сервера Nginx, на роботу з бакендамі, Apache і FastCGI

Перейдемо до конфігураційного файлу.

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

Тут у нас робочий варіант конфігураційного файлу nginx, так би мовити, без наворотів, лише необхідний мінімум. Виглядає він у нас такий спосіб:

Перевіряємо правильність файлу конфігурації:

Все в порядку, можна запускати

Перевіримо що у нас там показує netstat:

і покласти його в кореневу директорію документів сайту. Тепер запросивши його через браузер, ми побачимо сторінку PHP. з купою різної технічної інформації, включаючи опції збірки, настройки, модулі, розширення, конфігураційні файли і т.д. Знаходимо рядок Server API. і бачимо в якому режимі працює PHP на даному хості, це у нас, CGI / FastCGI. тобто, то що нам і було потрібно.

Перевірити, що і решта Location. відпрацьовують належним чином, передаючи запити бакендам, можна так, створити необхідний файл, запросити його через рядок браузера і перевірити лог файли. Тобто, запит до файлу test.pl. можна буде виявити в файлі access.log. віртуального хоста, сервера Apache. а запит до файлу test.html. в лог файлі веб сервера Nginx.

На цьому поки що хотілося-б закінчити. Хай щастить.

Схожі статті