NGINX зі зворотним проксі ⋆ ALexHost SRL

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Use code at checkout:

Skills
18.12.2024
No categories

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 як зворотного проксі для ваших потреб.

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Use code at checkout:

Skills