Як налаштувати зворотний проксі-сервер Nginx для Apache
Nginx та Apache – два найпопулярніші веб-сервери у світі, кожен з яких має свої сильні сторони. Apache відомий своєю гнучкістю та надійною системою модулів, в той час як Nginx цінується за високу продуктивність та низьке споживання ресурсів, особливо при роботі зі статичним контентом. У багатьох сценаріях вигідно комбінувати ці дві системи, використовуючи Nginx як зворотний проксі перед Apache. Таке налаштування дозволяє Nginx обробляти вхідні запити і обслуговувати статичні файли, в той час як Apache обробляє динамічний вміст, наприклад, PHP-скрипти або додатки, керовані базами даних.
У цій статті ми розглянемо процес налаштування Nginx як зворотного проксі для Apache, що забезпечить безперебійну та ефективну конфігурацію веб-сервера.
Що таке зворотний проксі?
Зворотний проксі – це сервер, який знаходиться перед одним або декількома внутрішніми серверами і перенаправляє клієнтські запити на відповідний сервер. В даному випадку Nginx буде виступати в ролі зворотного проксі, перенаправляючи запити на Apache, який буде обслуговувати динамічний контент.
Використання Nginx в якості зворотного проксі пропонує кілька переваг:
- Покращена продуктивність: Nginx швидко обслуговує статичні файли (наприклад, зображення, CSS, JavaScript), зменшуючи навантаження на Apache.
- Балансування навантаження: Nginx може розподіляти трафік між декількома внутрішніми серверами, підвищуючи доступність і надійність.
- Завершення SSL-з‘єднання: Nginx може обробляти SSL-шифрування, знімаючи обчислювальне навантаження з Apache.
- Безпека: Nginx може надавати додаткові функції безпеки, такі як фільтрація запитів та обмеження швидкості.
Крок 1: Встановлення Nginx та Apache
Перш ніж налаштувати Nginx в якості зворотного проксі, переконайтеся, що на вашому сервері встановлені Nginx і Apache. Ви можете встановити їх за допомогою менеджера пакетів, залежно від дистрибутива Linux.
Для Debian/Ubuntu:
Для CentOS/RHEL:
Після встановлення Nginx і Apache запустіть і увімкніть обидві служби, щоб переконатися, що вони запускаються при завантаженні:
Крок 2: Налаштування Apache
Apache буде працювати як внутрішній сервер, обробляючи динамічні запити, такі як PHP-скрипти. Переконайтеся, що Apache налаштовано на прослуховування певного порту, зазвичай порту
8080
80
80
Налаштуйте Apache на прослуховування порту 8080:
- Відкрийте конфігураційний файл Apache:
- Знайдіть рядок, в якому вказано порт, який слухає Apache (зазвичай це), і змініть його:
Listen 80
- Збережіть зміни і вийдіть з редактора.
- Перезапустіть Apache, щоб застосувати зміни:
Тепер Apache налаштовано на прослуховування порту
8080
80
Крок 3: Налаштування Nginx в якості зворотного проксі-сервера
Далі нам потрібно налаштувати Nginx на роботу в якості зворотного проксі, перенаправляючи запити на Apache. Ми створимо віртуальний хост в Nginx, який буде слухати порт
80
8080
Створення конфігурації віртуального хоста Nginx:
- Відкрийте або створіть новий файл конфігурації віртуального хоста в Nginx:
- Додайте до файлу наступну конфігурацію:
У цій конфігурації
- : Nginx слухає порт
listen 80
для вхідних запитів.80
- : Домен або IP-адреса, яку буде обслуговувати Nginx.
ім'я_сервера
- : Перенаправляє запити на Apache, який слухає порт
proxy_pass
.8080
- : Передає різні заголовки до Apache, включаючи початковий IP-адресу та протокол клієнта.
proxy_set_header
- Блокдля статичного вмісту гарантує, що Nginx обслуговує такі файли, як зображення, CSS і JavaScript безпосередньо, зменшуючи навантаження на Apache.
розташування
- Збережіть і закрийте файл конфігурації.
- Якщо ви використовуєте Debian/Ubuntu, увімкніть сайт, створивши символічне посилання на:
sites-enabled
- Перевірте конфігурацію Nginx на наявність синтаксичних помилок:
- Перезапустіть Nginx, щоб застосувати нову конфігурацію:
Крок 4: Тестування налаштування зворотного проксі
Тепер, коли Nginx і Apache налаштовані, настав час протестувати налаштування зворотного проксі, щоб переконатися, що все працює правильно.
- Перейдіть до свого домену або IP-адреси: Відкрийте браузер і перейдіть за адресою(замініть її на ваш реальний домен або IP-адресу сервера). Якщо все налаштовано правильно, ви повинні побачити вміст, який обслуговується Apache, але проходить через Nginx.
http://example.com
- Перевірте логи Nginx і Apache: Якщо виникли якісь проблеми, перевірте логи Nginx і Apache для усунення несправностей:
- Журнали Nginx:і
/var/log/nginx/access.log
/var/log/nginx/error.log
- Логи Apache:та
/var/log/apache2/access.log
(або/var/log/apache2/error.log
для CentOS/RHEL)/var/log/httpd/
- Журнали Nginx:
Крок 5: (Необов’язково) Налаштуйте SSL для HTTPS
Якщо ви хочете захистити свій сайт за допомогою HTTPS, Nginx може обробляти завершення SSL. Це означає, що Nginx буде керувати SSL-сертифікатами і шифруванням, в той час як Apache буде обробляти тільки розшифрований HTTP-трафік.
Кроки для ввімкнення SSL:
- Отримайте SSL-сертифікат: Ви можете використовувати Let’s Encrypt, щоб отримати безкоштовний SSL-сертифікат для вашого домену:
- Змініть конфігурацію Nginx: Оновіть конфігураційний файл Nginx для прослуховування портудля HTTPS:
443
- Перенаправлення HTTP на HTTPS: додайте блок перенаправлення у вашій конфігурації, щоб забезпечити перенаправлення всіх HTTP-запитів на HTTPS:
- Перезапустіть Nginx: Перезапустіть Nginx, щоб застосувати зміни:
Висновок
Використання Nginx в якості зворотного проксі для Apache – це потужне налаштування, яке поєднує в собі сильні сторони обох веб-серверів. Nginx ефективно обробляє статичний контент і вхідні запити, в той час як Apache керує динамічним контентом і внутрішньою обробкою. Цей гібридний підхід може значно підвищити продуктивність, безпеку і масштабованість інфраструктури вашого веб-сервера.
Дотримуючись кроків, викладених у цьому посібнику, ви можете налаштувати Nginx як зворотний проксі перед Apache і скористатися перевагами обох систем. Крім того, використання SSL з Nginx гарантує безпеку вашого веб-сайту, забезпечуючи спокій для вас і ваших користувачів.