## Введение в Nginx Reverse Proxy
Nginx reverse proxy — мощный инструмент для распределения трафика между несколькими серверами. Он выступает посредником между клиентами и бэкенд-серверами, повышая отказоустойчивость, безопасность и производительность инфраструктуры. В этой статье разберем, как настроить Nginx для проксирования запросов на несколько серверов с балансировкой нагрузки, SSL-терминацией и оптимизацией.
## Преимущества Использования Nginx в Качестве Reverse Proxy
– **Балансировка нагрузки**: Равномерное распределение трафика между серверами.
– **Безопасность**: Сокрытие внутренней инфраструктуры и защита от DDoS.
– **Кэширование**: Ускорение загрузки статического контента.
– **SSL/TLS терминация**: Дешифрование трафика на прокси перед передачей бэкендам.
– **Гибкость**: Легкое добавление/удаление серверов без downtime.
## Пошаговая Настройка Reverse Proxy для Нескольких Серверов
### 1. Установка Nginx
Обновите пакеты и установите Nginx:
“`bash
sudo apt update && sudo apt install nginx -y
“`
### 2. Конфигурация Upstream-блока
В файле `/etc/nginx/nginx.conf` определите группу серверов:
“`nginx
http {
upstream backend {
server 192.168.1.10:80;
server 192.168.1.11:80;
server 192.168.1.12:80 backup; # резервный сервер
}
}
“`
### 3. Настройка Виртуального Хоста
Создайте конфиг в `/etc/nginx/sites-available/proxy.conf`:
“`nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
“`
Активируйте конфиг: `ln -s /etc/nginx/sites-available/proxy.conf /etc/nginx/sites-enabled/`.
### 4. Балансировка Нагрузки
Добавьте методы балансировки в `upstream`:
“`nginx
upstream backend {
least_conn; # метод наименьших соединений
server 192.168.1.10 weight=3; # вес сервера
server 192.168.1.11;
}
“`
## Оптимизация и Безопасность
### Кэширование Статики
Добавьте в `location`:
“`nginx
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
location / {
proxy_cache my_cache;
proxy_cache_valid 200 1h;
}
“`
### SSL/TLS Терминация
Используйте Let’s Encrypt для сертификата и настройте:
“`nginx
server {
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# … остальная конфигурация
}
“`
## Часто Задаваемые Вопросы (FAQ)
### Как проверить конфигурацию Nginx?
Используйте команду: `sudo nginx -t`. Ошибки будут выведены в терминал.
### Что делать при падении сервера?
Nginx автоматически перенаправляет трафик на рабочие ноды. Резервные серверы (с параметром `backup`) активируются при сбое основных.
### Как ограничить нагрузку на бэкенд?
Настройте лимиты в `upstream`:
“`nginx
upstream backend {
server 192.168.1.10 max_conns=100;
}
“`
### Поддерживает ли Nginx WebSocket?
Да. Добавьте в `location`:
“`nginx
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
“`
## Заключение
Nginx reverse proxy для нескольких серверов — эффективное решение для масштабируемости и отказоустойчивости. Следуя этому руководству, вы настроите балансировку, SSL-терминацию и кэширование, сократив нагрузку на бэкенд и улучшив пользовательский опыт. Регулярно обновляйте конфигурацию под растущие требования инфраструктуры.