Что такое прокси-сервер Nginx и зачем он нужен?
Nginx — высокопроизводительный веб-сервер, часто используемый как прокси-сервер для перенаправления трафика между клиентами и бэкенд-приложениями. Настройка прокси в Nginx позволяет:
- Балансировать нагрузку между несколькими серверами
- Кешировать статический контент для ускорения загрузки
- Обеспечивать безопасность, скрывая структуру бэкенда
- Обрабатывать SSL/TLS терминацию
- Маршрутизировать запросы по доменам или URL-пути
Пошаговая настройка базового прокси в Nginx
Для конфигурации выполните следующие действия:
- Установите Nginx:
sudo apt install nginx
(для Ubuntu/Debian) - Создайте конфигурационный файл в
/etc/nginx/sites-available/proxy.conf
- Добавьте базовую прокси-директиву:
server { listen 80; server_name example.com; location / { proxy_pass http://backend_server_ip:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
- Активируйте конфиг:
sudo ln -s /etc/nginx/sites-available/proxy.conf /etc/nginx/sites-enabled/
- Проверьте синтаксис:
sudo nginx -t
- Перезагрузите Nginx:
sudo systemctl reload nginx
Расширенные настройки прокси-сервера
Кеширование контента
Добавьте в блок location
:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m; proxy_cache my_cache; proxy_cache_valid 200 302 10m;
Балансировка нагрузки
upstream backend { server 192.168.1.10:8000; server 192.168.1.11:8000 weight=2; } location / { proxy_pass http://backend; }
SSL/TLS терминация
server { listen 443 ssl; ssl_certificate /etc/ssl/certs/nginx.crt; ssl_certificate_key /etc/ssl/private/nginx.key; # ... прокси-директивы }
Типичные ошибки и отладка
- 502 Bad Gateway: Проверьте доступность бэкенд-сервера и порты
- Кеш не работает: Убедитесь в правах на папку
/var/cache/nginx
- Используйте
proxy_intercept_errors on;
для кастомных страниц ошибок - Логи:
tail -f /var/log/nginx/error.log
FAQ: Часто задаваемые вопросы
Как проверить работоспособность прокси?
Выполните curl -I http://ваш_домен
и проверьте заголовки ответа.
Как ограничить доступ по IP?
Добавьте в location
:
allow 192.168.1.0/24; allow 10.0.0.1; denу all;
Как передавать WebSocket через прокси?
Используйте директивы:
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
Можно ли проксировать несколько бэкендов?
Да, через разные location
-блоки:
location /app1 { proxy_pass http://backend1; } location /app2 { proxy_pass http://backend2; }
Как настроить таймауты?
Добавьте параметры:
proxy_connect_timeout 5s; proxy_read_timeout 30s;
Правильная настройка прокси-сервера Nginx значительно улучшает производительность и безопасность инфраструктуры. Тестируйте изменения в staging-среде и используйте инструменты вроде nginx -t перед применением конфигураций.