Настройка прокси-сервера Nginx: полное руководство с примерами и FAQ

Что такое прокси-сервер Nginx и зачем он нужен?

Nginx — высокопроизводительный веб-сервер, часто используемый как прокси-сервер для перенаправления трафика между клиентами и бэкенд-приложениями. Настройка прокси в Nginx позволяет:

  • Балансировать нагрузку между несколькими серверами
  • Кешировать статический контент для ускорения загрузки
  • Обеспечивать безопасность, скрывая структуру бэкенда
  • Обрабатывать SSL/TLS терминацию
  • Маршрутизировать запросы по доменам или URL-пути

Пошаговая настройка базового прокси в Nginx

Для конфигурации выполните следующие действия:

  1. Установите Nginx: sudo apt install nginx (для Ubuntu/Debian)
  2. Создайте конфигурационный файл в /etc/nginx/sites-available/proxy.conf
  3. Добавьте базовую прокси-директиву:
    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;
        }
    }
    
  4. Активируйте конфиг: sudo ln -s /etc/nginx/sites-available/proxy.conf /etc/nginx/sites-enabled/
  5. Проверьте синтаксис: sudo nginx -t
  6. Перезагрузите 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 перед применением конфигураций.

Proxy Ninja
Добавить комментарий