Налаштування зв'язки apache і nginx в debian 7 - debian help

Home # 149; Веб-сервер # 149; Налаштування зв'язки Apache і Nginx в Debian 7

список розділів

У став стандартним LAMP-сервера є ряд істотних недоліків. Наприклад, mod_php вимагає використання mpm_prefork_module, тобто відсутня підтримка ниток і для обробки запитів створюються повноцінні процеси, на що потрібен час і оперативна пам'ять. І пам'яті потрібно дуже багато: від декількох мегабайт до декількох десятків, іноді сотень мегабайт, але це скоріше залежить від оброблюваних скриптів. У будь-якому разі, не ефективно витрачати 10 мегабайт на віддачу маленької картинки.

У зв'язку з цим видається розумною думка знайти легковаге рішення для віддачі статики, а на Apache покласти тільки обробку php-скриптів. Таким рішенням став проксірующій веб-сервер nginx. Є й альтернативні рішення, але вони не стільки популярні.

Чому б взагалі не відмовитися від Апача? Рішення Apache + mod_php стало стандартним і все до нього звикли. Крім того, всі звикли до .htaccess і mod_rewrite. Зв'язка Apache + Nginx в Debian дозволяє залишити звичне середовище для виконання скриптів і усунути вузькі місця. Тобто підвищується швидкість віддачі статики і знижується споживання оперативної пам'яті.

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

Будемо вважати, що на вашому сервері LAMP вже встановлений і працює.

Установка nginx в Debian

Існують офіційні репозиторії nginx. Для їх використання створимо файл /etc/apt/sources.list.d/nginx.list і додамо в нього наступні рядки:

Після чого слід додати PGP-ключ, оновити базу пакетів і встановити nginx:

Подивитися версію nginx:

nginx version: nginx / 1.6.1

Якщо у вас вже встановлений Apache, то nginx не запуститься, так як 80 порт вже зайнятий.

Налаштування Apache

За замовчуванням Apache слухає на всіх інтерфейсах на 80 порту, який нам потрібно звільнити для nginx. Тому ми переважили Apache на внутрішній інтерфейс і 81 порт.

Для цього в файлі /etc/apache2/ports.conf наводимо пару рядків до такого виду:

NameVirtualHost *: 81
Listen 127.0.0.1:81

А також доведеться поправити порти у всіх віртуальних хостах, посилання на які в Debian розташовані в директорії / etc / apache2 / sites-enabled /:

Сенс використання внутрішнього інтерфейсу в зниженні поверхні атаки, а порт змінюється для того, щоб не перетинатися з nginx.

Після перезапуску Apache ваші сайти будуть недоступні. Тому варто заздалегідь налаштувати nginx щоб можна було його одразу запустити.

Налаштування Nginx

У nginx порт, на якому слухати, вказується для кожного віртуального хоста окремо. Крім того, для кожного сайту, який у вас вже був налаштований в Apache, потрібно створити окремий файл в / etc / nginx / sites-available / і потім зробити симлінк в / etc / nginx / sites-enabled /. Розглянемо вміст файлу віртуального хоста на прикладі цього сайту:

server listen 80;
server_name debian-help.ru www.debian-help.ru;

* \. (Html ​​| jpeg | jpg | gif | png | css | js | pdf | txt | tar | ico) $ root / var / www / debianhelp /;
expires 60d;
>
>

Вказуємо на якому порту слухати і на які доменні імена відгукуватися. Зазначаємо, що всі запити потрібно перенаправляти на Apache, крім запитів до файлів з певними розширеннями, які потрібно обробляти самостійно, для яких вказана коренева директорія і час зберігання їх в кешах браузерів користувачів.

Залишилося зробити симлінк:

За замовчуванням, nginx читає додаткові конфігураційні файли з директорії /etc/nginx/conf.d/. Створимо в цій директорії файл proxy.conf і додамо в нього рядки:

proxy_redirect off;
proxy_set_header Host $ host;
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;

Тепер nginx можна запускати.

установка mod_rpaf

Фактично, mod_rpaf потрібно тільки встановити і перевірити, щоб він був підключений до Apache.

Якщо в списку немає rpaf_module (shared), то робимо симлінк з директорії / etc / apache2 / mods-available в / etc / apache2 / mods-enabled і перезапускаємо Apache.

В результаті настройки зв'язки Apache і Nginx в Debian запити від користувачів буде отримувати nginx і в залежності від того, що запитується, буде видавати результат або самостійно, або передавати далі. Метою є розвантажити досить важкий Apache передаючи йому тільки запити на виконання php-скриптів. Тим самим ми прискорюємо роботу сайтів і знижуємо споживання оперативної пам'яті. Крім того, отримуємо більше гнучкості в налаштуванні сервера беручи краще від обох програм.

Схожі статті