- Что такое обратный прокси в Nginx и зачем нужен multiple server_name?
- Базовые принципы настройки reverse proxy с несколькими server_name
- Пошаговый пример конфигурации для нескольких доменов
- Продвинутые техники управления трафиком
- Типичные проблемы и оптимизация производительности
- FAQ: Ответы на ключевые вопросы
Что такое обратный прокси в Nginx и зачем нужен multiple server_name?
Обратный прокси-сервер Nginx выступает посредником между клиентами и бэкенд-серверами, обеспечивая балансировку нагрузки, кэширование и повышенную безопасность. Директива server_name позволяет одному экземпляру Nginx обслуживать несколько доменов, перенаправляя трафик на соответствующие серверы. Это критически важно для:
- Хостинга множества сайтов на одном IP-адресе
- Упрощения управления инфраструктурой
- Обработки поддоменов и мультитенантных систем
- Реализации микросервисной архитектуры
Базовые принципы настройки reverse proxy с несколькими server_name
Конфигурация начинается с блока server в файле /etc/nginx/nginx.conf. Ключевые элементы:
- Директива listen: Определяет порт (обычно 80 или 443)
- server_name: Перечисляет домены через пробел (example.com api.example.com)
- location /: Задает правила проксирования с
proxy_pass - Wildcard-символы: Использование
*.example.comдля поддоменов
Пошаговый пример конфигурации для нескольких доменов
server {
listen 80;
server_name site1.ru www.site1.ru;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
}
}
server {
listen 80;
server_name site2.com api.site2.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
}
}
После изменений проверьте конфигурацию командой nginx -t и перезагрузите сервис.
Продвинутые техники управления трафиком
- Regex в server_name:
server_name ~^(?.+).example.com$для динамических поддоменов - Приоритет обработки: Nginx выбирает блок server по точному совпадению → wildcard → regex
- SSL/TLS сертификаты: Используйте блоки
listen 443 sslс отдельными сертификатами для каждого домена - Кэширование: Добавьте
proxy_cacheдля статического контента
Типичные проблемы и оптимизация производительности
Распространенные ошибки включают конфликты server_name и неправильные заголовки. Для оптимизации:
- Установите
keepalive_timeoutдля постоянных соединений - Настройте
proxy_buffer_sizeдля больших ответов - Используйте
upstreamблоки для кластеризации бэкендов - Мониторьте логи ошибок:
/var/log/nginx/error.log
FAQ: Ответы на ключевые вопросы
Q: Как добавить новый домен в существующую конфигурацию?
A: Создайте новый блок server с уникальным server_name или добавьте домен в существующий блок через пробел.
Q: Можно ли использовать один SSL-сертификат для нескольких доменов?
A: Да, с помощью wildcard-сертификатов (для поддоменов) или SAN-сертификатов (для разных доменов).
Q: Почему Nginx выбирает не тот server блок?
A: Проверьте приоритетность: точные имена имеют высший приоритет. Убедитесь в отсутствии дубликатов.
Q: Как ограничить доступ по IP для определенных доменов?
A: Добавьте в блок location директиву:
allow 192.168.1.1; deny all;
Q: Обрабатывает ли Nginx HTTPS трафик с multiple server_name?
A: Да, но для каждого домена требуется настройка SSL в отдельном блоке server на порту 443.
Использование multiple server_name в Nginx reverse proxy значительно упрощает управление веб-инфраструктурой. Регулярно обновляйте конфигурацию и тестируйте изменения для поддержания оптимальной производительности.








