# Nginx

Налаштування зв'язки **Apache + Nginx** — не складніше, ніж самостійне налаштування Apache, якщо вже маєш з ним досвід. Але є нюанси, бо це **дві окремі системи**, які треба **синхронізувати правильно**.

#### Навіщо ця зв’язка?

Найчастіше Nginx використовують як **реверс-проксі**, який:

* приймає зовнішній трафік (на 80/443),
* обробляє SSL/TLS,
* кешує статику,
* віддає прості файли напряму,
* а все решта — проксить на Apache (на 127.0.0.1:8080, наприклад).

Apache при цьому виконує роль **бекенда**, особливо якщо використовуєш `.htaccess`, CGI, PHP або інші модулі.

***

#### Що треба врахувати

1. **Порти:**
   * Nginx слухає 80/443.
   * Apache — щось інше (8080, 8000 або localhost-сокет).
2. **Конфлікти:**
   * Обидва не можуть слухати один порт одночасно.
   * SSL має бути налаштований лише в Nginx.
3. **Прозорість:**
   * Apache не бачитиме справжній IP клієнта без додаткових налаштувань:
     * Увімкни `RemoteIPModule`.
     * Пропиши `RemoteIPHeader X-Real-IP`.
4. **Конфігурація Nginx:**\
   Приклад:

   ```nginx
   server {
       listen 80;
       server_name example.com;

       location / {
           proxy_pass http://127.0.0.1:8080;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
   }
   ```
5. **Використання кешу:**
   * Nginx може кешувати зображення, CSS, JS — це знижує навантаження на Apache.

***

#### Переваги

* Краща продуктивність для статики.
* Безпечніше SSL (одна точка входу).
* Гнучкість в розгортанні (можна розносити по контейнерах або хостах).

***

#### Чи варто?

* Якщо ти **не використовуєш інтенсивно PHP, .htaccess або CGI** — можливо, простіше перейти повністю на Nginx.
* Якщо твоя структура вже заточена під Apache (модулі, специфічні правила) — Nginx як проксі буде хорошим компромісом.

***

### А чи є сенс заморочуватися з Nginx, якщо навантаження на сайт не дуже велике?

Якщо навантаження на сайт **не дуже велике**, то часто **немає особливого сенсу** ускладнювати архітектуру і додавати Nginx.

#### Чому?

1. **Простота підтримки:**\
   Менше компонентів — менше точок відмови, менше налаштувань і менше можливих помилок.
2. **Невелика вигода:**\
   Якщо трафік низький, то й оптимізації кешування і розвантаження Apache навряд сильно відчутні.
3. **Адміністрування:**\
   Потрібно розуміти, як працюють обидва сервери, налаштовувати проксі, правильну передачу IP, SSL в Nginx — це додатковий час і зусилля.

***

#### Коли має сенс?

* Якщо у майбутньому очікуєш зростання навантаження.
* Якщо хочеш окремо керувати кешуванням статичних файлів.
* Якщо плануєш застосовувати сучасні практики, як HTTP/2, SSL offloading, rate limiting.

***

#### Висновок

Для невеликих сайтів і низького трафіку краще тримати **просту конфігурацію з одним Apache**. Якщо з часом потрібно буде масштабувати — тоді можна переходити до зв’язки Nginx + Apache.

***
