- Что такое Reverse Proxy и зачем он нужен для двух серверов?
- Преимущества использования Nginx в качестве Reverse Proxy
- Пошаговая настройка Nginx Reverse Proxy для двух серверов
- Шаг 1: Установка Nginx
- Шаг 2: Конфигурация upstream-блока
- Шаг 3: Настройка виртуального хоста
- Шаг 4: Проверка и перезагрузка
- Оптимизация работы Reverse Proxy
- Распространенные проблемы и решения
- Часто задаваемые вопросы (FAQ)
- Как проверить работоспособность серверов в upstream?
- Можно ли использовать разные порты для серверов?
- Как настроить SSL для Reverse Proxy?
- Чем отличается least_conn от ip_hash?
- Как ограничить доступ к бэкенд-серверам?
Что такое Reverse Proxy и зачем он нужен для двух серверов?
Reverse proxy (обратный прокси) в Nginx выступает посредником между клиентами и вашими серверами. Когда вам нужно распределить нагрузку между двумя бэкенд-серверами, Nginx становится незаменимым инструментом. Он принимает входящие запросы, перенаправляет их на один из серверов (app1 или app2), а затем возвращает результат клиенту. Это повышает отказоустойчивость: если один сервер падает, Nginx автоматически перенаправляет трафик на рабочий.
Преимущества использования Nginx в качестве Reverse Proxy
- Балансировка нагрузки: Равномерное распределение запросов между серверами
- Безопасность: Скрытие структуры внутренней сети и защита от DDoS-атак
- Кэширование: Ускорение отдачи статического контента
- SSL/TLS терминация: Централизованное управление сертификатами
- Гибкая маршрутизация: Настройка правил на основе URL, IP или cookies
Пошаговая настройка Nginx Reverse Proxy для двух серверов
Шаг 1: Установка Nginx
Обновите пакеты и установите Nginx на сервер-прокси:
sudo apt update
sudo apt install nginx -y
Шаг 2: Конфигурация upstream-блока
В файле /etc/nginx/nginx.conf добавьте блок, определяющий серверы бэкенда:
http {
upstream backend {
server 192.168.1.10:80; # Первый сервер
server 192.168.1.11:80; # Второй сервер
least_conn; # Алгоритм балансировки
}
}
Шаг 3: Настройка виртуального хоста
Создайте конфиг в /etc/nginx/sites-available/:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Шаг 4: Проверка и перезагрузка
sudo nginx -t # Проверка конфигурации
sudo systemctl reload nginx
Оптимизация работы Reverse Proxy
- Таймауты: Настройте
proxy_connect_timeoutиproxy_read_timeout - Кэширование: Добавьте
proxy_cache_pathдля статики - Health checks: Используйте
max_failsиfail_timeoutв upstream - Буферизация: Отрегулируйте
proxy_buffer_size
Распространенные проблемы и решения
- 502 Bad Gateway: Проверьте доступность бэкенд-серверов и firewall
- Дисбаланс нагрузки: Смените алгоритм на
ip_hashилиleast_conn - Потеря заголовков: Добавьте
proxy_set_headerдля нужных параметров - Медленное соединение: Увеличьте
proxy_read_timeout
Часто задаваемые вопросы (FAQ)
Как проверить работоспособность серверов в upstream?
Используйте команду curl -I http://ваш-сервер или мониторинг через Nginx Plus. В open-source версии добавьте параметры max_fails=3 fail_timeout=30s в upstream-блоке.
Можно ли использовать разные порты для серверов?
Да, укажите порты в директиве server: server backend1.com:8080;. Nginx поддерживает любые комбинации IP:PORT.
Как настроить SSL для Reverse Proxy?
Добавьте сертификат в конфиг server-блока и измените proxy_pass на HTTPS:
listen 443 ssl;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass https://backend;
}
Чем отличается least_conn от ip_hash?
least_conn направляет запрос на сервер с наименьшим числом активных соединений. ip_hash привязывает клиента к конкретному серверу по IP, что полезно для сессий.
Как ограничить доступ к бэкенд-серверам?
Настройте firewall (например, ufw) для разрешения доступа только с IP Nginx-прокси: sudo ufw allow from nginx_ip to any port 80.








