Для чого потрібна зв'язка Apache & Nginx можна звісно пошукати й в інших куточках неосяжної Мережі, але я ж велосипедист і тому напишу своїми словами. У процесі роботи Web сервера Apache він при кожному новому підключенні до нього породжує новий процес, навіть якщо немає жодного підключення до сервера, то незмінно 4-5 процесів httpd є в системі. Тим самим апач плодить n-ну кількість процесів, що звісно ж позначається на обсязі вільної оперативної пам'яті та підвищеному навантаженні на процесор сервера. Nginx дозволяє знизити це навантаження в багато разів. Дана зв'язка веб серверів приблизно така на фронтенд (frontend) ставиться енджинкс який і ловить усі вхідні підключення від юзер-агентів ваших відвідувачів. Далі, якщо запитується статичний контент такий як html сторінки, фотографії, розшарений файл, то nginx сам обробляє даний запит і максимально швидко віддає його клієнту. Якщо ж потрібна обробка якогось php скрипта, то nginx відловивши запит від клієнта віддає його апачу (backend) а той вже в свою чергу за допомогою свого mod_php обробляє скрипт і віддає nginx'у вже готові дані при цьому кількість запущених процесів Апача не зростає ( у апача в такій зв'язці як я розумію всього одне підключення з 127.0.0.1 на якому він приймає запити від nginx). Якщо говорити ще простіше то nginx це легка прошарка між клієнтом і основним потужним веб сервером що дозволяє не плодити процесів Апача зберігаючи тим самим дорогоцінний RAM. Тепер про налаштування. Так як я не юзаю дебіани та інші убунти опишу процес встановлення і налаштування в рамках Arch Linux.
sudo pacman -S nginx
Після встановлення nginx треба налаштувати (у вас він напевно вже є) Апач. Відкриваємо конфіг:
sudo nano -w /etc/httpd/conf/httpd.conf
Шукаємо строчку
ServerRoot "/etc/httpd" Listen 80
і виправляємо на 8080 (за замовчуванням Апач слухає основний 80 порт) тепер Апач буде чекати підключення на 8080 порту куди і буде відправляти запити на обробку скриптів наш nginx. Вобщем то з конфігом Apache ми закінчили, більше там принаймні я нічого не правив. Тепер приступимо до енджинксу:
sudo nano -w /etc/nginx/conf/nginx.conf
Потрібно буде розкоментувати деякі рядки. У самій першій розкоменчуємо рядок "user" і вписуємо туди свого юзера, найчастіше це http. далі пропишемо куди nginx буде писати логи помилок:
error_log /var/log/httpd/error.log notice;
Далі якщо ми хочемо використовувати awstats для підрахунку статистики відвідування розкоменчуємо це:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
Далі наведені налаштування взяті з якогось поважного ресурсу і принаймні поки я не вдавався в їх подробиці
Стиснення gzip я відключив, хоч усі й радять його включати але у мене після його включення несамовито зашурхотів вінт т я вирішив його вирубити. Тепер налаштування самого сервера: Налаштовуємо nginx на прослуховування 80 порту. Хочу звернути увагу що якщо ви в конфігу апача поставили прослуховування 127.0.0.1:8080 то і тут треба буде вказувати не listen 80, а listen 127.0.0.1:80
server {
listen 80;
server_name syslinux.ru www.syslinux.ru;
charset utf-8;
access_log /var/log/httpd/host.access.log main;
Цей рядок це вказівка файлу логу, куди буде записуватися інфа від хостів, що підключаються до nginx. Усюди, де я читав про налаштування nginx, усі намагалися змусити працювати статистику через якісь додаткові модулі, але в даному випадку, якщо у вас уже працює awstats на апачі, то потрібно лише вказати в налаштуваннях awstats новий лог (у даному випадку це host.access.log) для збору стати. Рядок location залишаємо без змін
location / {
Далі шукаємо рядок proxy:
proxy_pass http://127.0.0.1:8080/;
Тут ми вказуємо адресу та порт, куди передавати запити, цей порт у нас слухає Апач, що нам власне й потрібно. Ще один важливий рядок це root - тобто розташування файлів сервера відносно файлової системи, у мене воно тут:
root /srv/http;
Далі перезапускаємо Апач
sudo /etc/rc.d/httpd restart
і пробуємо запустити nginx:
sudo /etc/rc.d/nginx start
ссылка на статью
