NGINX зі зворотним проксі
Вступ до NGINX та зворотного проксі
NGINX – це високопродуктивний HTTP-сервер, зворотний проксі-сервер і програмне забезпечення з відкритим вихідним кодом, яке використовується багатьма веб-сайтами по всьому світу. Його універсальність і швидкість зробили його популярним вибором для веб-хостингу, балансування навантаження, кешування і зворотного проксі-сервера. Зокрема, зворотний проксі – це потужний інструмент, який знаходиться перед веб-сервером і перенаправляє клієнтські запити на відповідні внутрішні сервери. У цій статті ми розглянемо основи роботи NGINX зі зворотним проксі і те, як його ефективно налаштувати.
Що таке зворотний проксі?
Зворотний проксі виступає в ролі посередника між клієнтами і внутрішніми серверами. На відміну від звичайного проксі, який використовується клієнтами для анонімного доступу до ресурсів, зворотний проксі розташовується на стороні сервера, обробляючи запити від клієнтів і розподіляючи їх на відповідні внутрішні сервери. Основні переваги використання зворотного проксі включають
- Балансування навантаження: Розподіл клієнтських запитів між декількома серверами, що запобігає перевантаженню будь-якого окремого сервера і підвищує загальну продуктивність.
- Безпека та анонімність: приховування IP-адрес внутрішніх серверів, що захищає їх від прямого доступу до Інтернету.
- Кешування: кешування статичного контенту для прискорення доставки часто запитуваних ресурсів.
- Завершення роботи SSL: Перекладання шифрування та дешифрування SSL/TLS на зворотний проксі-сервер, що зменшує навантаження на внутрішні сервери.
Чому варто використовувати NGINX як зворотний проксі?
Легкий дизайн і неблокуюча архітектура NGINX роблять його чудовим вибором для зворотного проксі-сервера. Він може обробляти велику кількість одночасних з’єднань з низьким споживанням ресурсів, що робить його ідеальним для веб-сайтів з високим трафіком або для підтримки високої доступності. Деякі переваги використання NGINX в якості зворотного проксі включають
- Висока продуктивність: NGINX розроблений для ефективної обробки великої кількості з’єднань, що робить його ідеальним для середовищ, які вимагають швидкого часу відповіді на запит.
- Гнучкість: NGINX дозволяє легко конфігурувати декілька внутрішніх серверів, що дає змогу створювати складні налаштування балансування навантаження та відмовостійкості.
- Масштабованість: Зі зростанням трафіку ви можете додати більше серверів і збалансувати навантаження без будь-яких перебоїв.
- Функції безпеки: NGINX може примусово встановлювати HTTPS-з’єднання, блокувати певні IP-адреси та керувати автентифікацією.
Як налаштувати NGINX як зворотний проксі-сервер
Налаштування NGINX в якості зворотного проксі передбачає налаштування NGINX на прослуховування вхідних HTTP або HTTPS запитів і перенаправлення їх на один або декілька внутрішніх серверів. Ось покрокова інструкція для початку роботи:
Крок 1: Встановлення NGINX
Якщо ви не встановили NGINX на своєму сервері, почніть з його встановлення. Для більшості дистрибутивів Linux ви можете скористатися наступною командою:
# Для Debian/Ubuntu
sudo apt update
sudo apt install nginx
# Для CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
Після встановлення запустіть службу NGINX:
sudo systemctl start nginx
Крок 2: Базове налаштування зворотного проксі-сервера NGINX
Щоб налаштувати базовий реверсний проксі, вам потрібно відредагувати конфігураційний файл NGINX, який зазвичай знаходиться в /etc/nginx/nginx.conf або створити новий конфігураційний файл всередині /etc/nginx/conf.d/. Нижче наведено просту конфігурацію для зворотного проксінгу запитів на внутрішній сервер:
server {
listen 80;
ім'я_сервера example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
- listen 80;: Вказує NGINX слухати HTTP-запити на порту 80.
- ім’я_сервера: Замініть example.com на ваш домен або IP-адресу.
- proxy_pass: Вказує адресу внутрішнього сервера, на який слід перенаправляти запити.
- proxy_set_header: Встановлює додаткові заголовки для передачі на бекенд, які можуть бути корисними для ведення журналів і безпеки.
Крок 3: Зворотний проксі для декількох серверів бекенда
Щоб налаштувати розподіл навантаження між декількома внутрішніми серверами, ви можете визначити висхідний блок:
upstream backend {
сервер backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server { server
listen 80;
ім'я_сервера example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Ця конфігурація розподіляє запити між backend1.example.com, backend2.example.com і backend3.example.com по колу.
Крок 4: Увімкніть SSL для безпечних з’єднань
Щоб захистити зв’язок між клієнтами і зворотним проксі-сервером NGINX, ви можете увімкнути SSL/TLS. Вам знадобиться SSL-сертифікат, який можна отримати у таких провайдерів, як Let’s Encrypt:
server {
listen 443 ssl;
ім'я_сервера example.com;
ssl_certificate /path/to/ssl_certificate.crt;
ssl_certificate_key /path/to/ssl_certificate_key.key;
місце розташування / {{{}}
proxy_pass http://backend_server;
proxy_set_header Хост $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Переконайтеся, що ви замінили шляхи до вашого SSL-сертифіката і ключа. Після цього налаштування NGINX розірве SSL-з’єднання і перенаправить трафік на внутрішній сервер по протоколу HTTP.
Крок 5: Тестування і перезапуск NGINX
Після внесення змін до конфігурації NGINX важливо протестувати конфігурацію на наявність синтаксичних помилок:
sudo nginx -t
Якщо помилок не виявлено, перезапустіть NGINX, щоб застосувати зміни:
sudo systemctl restart nginx
Розширене налаштування зворотного проксі-сервера NGINX
Для більш розширених налаштувань ви можете налаштувати кешування, перезапис URL-адрес та власні алгоритми балансування навантаження. Ось кілька додаткових опцій:
- Кешування: Щоб увімкнути кешування, додайте директиви proxy_cache в блок розташування.
- Налаштоване балансування навантаження: Використовуйте різні стратегії балансування навантаження, такі як least_conn для розподілу трафіку на бекенд-сервер з найменшою кількістю активних з’єднань.
- Перевірки стану: Налаштуйте перевірки працездатності, щоб переконатися, що NGINX перенаправляє трафік тільки на справні бекенд-сервери, використовуючи proxy_next_upstream.
Висновок
Використання NGINX в якості зворотного проксі – це потужний спосіб керування трафіком та покращення масштабованості, продуктивності та безпеки ваших веб-додатків. Налаштувавши NGINX для обробки запитів і розподілу їх між внутрішніми серверами, ви можете отримати високодоступну і ефективну інфраструктуру. Незалежно від того, чи ви розміщуєте невеликий веб-сайт, чи масштабний додаток, NGINX з можливостями зворотного проксі може стати критично важливим компонентом вашої архітектури.
Завдяки цьому посібнику ви будете добре підготовлені до налаштування та оптимізації NGINX як зворотного проксі для ваших потреб.