Рабочие конфигурации Nginx для стандартных задач 2026: готовые решения для DevOps | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Рабочие конфигурации Nginx для стандартных задач 2026: готовые решения для DevOps

06 апреля 2026 14 мин. чтения

Настройка Nginx часто превращается в поиск по документации и форумам, когда нужно быстро решить конкретную задачу: проксировать приложение, настроить безопасный SSL или ограничить нагрузку на API. Эта статья — ваша коллекция проверенных в работе конфигурационных блоков Nginx, актуальных на 2026 год. Здесь собраны готовые решения для повседневных сценариев DevOps-инженера и системного администратора: от базового proxy_pass и современных настроек TLS до эффективного кеширования статики и защиты rate limiting. Каждый пример сопровождается подробными комментариями по ключевым директивам, что позволяет не просто скопировать код, но и понять его логику. Эти конфигурации составлены с учетом актуальных практик безопасности и оптимизации производительности, экономя ваше время на чтение официальной документации.

Быстрая навигация по готовым конфигурациям:

Базовый каркас и проксирование приложений: от простого к сложному

Начнем с основ. Приведем минимальный, но безопасный и оптимизированный конфигурационный файл Nginx в качестве шаблона. Затем перейдем к блокам location с proxy_pass: проксирование на бэкенд на localhost, проксирование с передачей заголовков (X-Forwarded-For), проксирование WebSocket-соединений. Для каждого блока — краткие комментарии к ключевым директивам (proxy_set_header, proxy_http_version для WS). Акцент на том, что это база, проверенная в работе.

Шаблон конфигурационного файла: основа для всех примеров

Этот шаблон nginx.conf служит надежной основой для всех последующих примеров. Он включает оптимальные на 2026 год значения для производительности и базовые директивы безопасности.

# /etc/nginx/nginx.conf
# Основной контекст событий и процессов
user nginx;
worker_processes auto; # Автоматическое определение по количеству ядер CPU
error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;

# Контекст событий: настройка сетевых соединений
events {
    worker_connections 1024; # Максимальное число соединений на worker-процесс
    use epoll; # Эффективный метод обработки для Linux
    multi_accept on;
}

# Основной HTTP-контекст
http {
    # Базовые настройки MIME-типов и кодировки
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # Настройки логгирования
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /var/log/nginx/access.log main;

    # Основные оптимизации производительности
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    client_max_body_size 20M; # Лимит на размер загружаемых файлов
    client_body_timeout 12;
    client_header_timeout 12;

    # Безопасность: скрываем версию Nginx в заголовках
    server_tokens off;

    # Включаем поддержку сжатия Gzip
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss;

    # Подключаем файлы с конфигурацией виртуальных хостов
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Ключевые пояснения:

  • worker_processes auto: Nginx автоматически определяет оптимальное количество worker-процессов по числу ядер CPU.
  • worker_connections 1024: Ограничивает одновременные соединения, предотвращая исчерпание файловых дескрипторов.
  • server_tokens off: Критически важная директива безопасности, скрывающая версию Nginx в HTTP-заголовках, чтобы усложнить жизнь злоумышленникам.
  • client_max_body_size 20M: Защищает от перегрузки сервера большими загрузками файлов.

Проксирование на бэкенд-приложение: классический proxy_pass

Самый частый сценарий — направить входящие HTTP-запросы с Nginx на backend-приложение (Gunicorn, Node.js, Java и т.д.). Вот готовый блок для виртуального хоста.

# /etc/nginx/sites-available/myapp.conf
server {
    listen 80;
    server_name app.example.com;
    root /var/www/html;
    index index.html;

    # Основной location для проксирования всего трафика на бэкенд
    location / {
        # Адрес и порт backend-приложения
        proxy_pass http://localhost:8000;

        # Стандартный набор заголовков для корректной работы приложения за прокси
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;

        # Важно для корректного формирования ссылок в редиректах от бэкенда
        proxy_redirect off;
        # Альтернатива: proxy_redirect http://localhost:8000/ http://app.example.com/;

        # Таймауты для работы с медленными бэкендами
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;

        # Отключает буферизацию ответов для некоторых streaming-приложений
        # proxy_buffering off;
    }

    # Отдельный location для API с префиксом /api/
    location /api/ {
        proxy_pass http://localhost:8001/; # Обратите внимание на слэш в конце
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Ключевые пояснения:

  • proxy_set_header X-Forwarded-For: Передает реальный IP-адрес клиента бэкенду, что критически важно для логирования, анализа и систем безопасности приложения.
  • proxy_set_header X-Forwarded-Proto: Сообщает бэкенду, по какому протоколу (http/https) клиент обратился к Nginx.
  • proxy_redirect: Контролирует, как Nginx будет модифицировать заголовки Location и Refresh в ответах от бэкенда. Значение off отключает модификацию, что подходит, если бэкенд сам умеет формировать правильные URL.

Проксирование WebSocket-соединений (для Telegram Bots API, live-чатов)

Для работы с real-time приложениями (чаты, уведомления, Telegram Bots API через WebSocket) требуется специальная конфигурация. Стандартный proxy_pass не поддерживает upgrade протокола.

server {
    listen 80;
    server_name ws.example.com;

    location / {
        # Проксирование обычного HTTP-трафика, если нужно
        proxy_pass http://backend_app;
        # ... стандартные proxy_set_header
    }

    # Специальный location для WebSocket-соединений
    location /ws/ {
        proxy_pass http://localhost:8080; # Ваш WebSocket-сервер

        # Обязательные директивы для апгрейда соединения до WebSocket
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # Стандартные заголовки для идентификации клиента
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # Увеличенные таймауты для долгоживущих соединений
        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }

    # Пример для специфичного эндпоинта, как в некоторых MCP-серверах
    location /api/v1/mcp/ {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        # ... остальные заголовки
    }
}

Ключевые пояснения:

  • proxy_http_version 1.1: WebSocket-протокол требует HTTP/1.1.
  • proxy_set_header Upgrade $http_upgrade и proxy_set_header Connection "upgrade": Эти заголовки инициируют смену протокола с HTTP на WebSocket (процесс upgrade). Без них соединение останется обычным HTTP.
  • Увеличенные proxy_read_timeout и proxy_send_timeout необходимы, так как WebSocket-соединения могут оставаться открытыми часами.

Безопасность и TLS: современные SSL-конфигурации на 2026 год

Предоставляем готовый блок server для HTTPS на порту 443. Включаем актуальные на 2026 год рекомендации по протоколам (TLS 1.2, 1.3) и наборам шифров (приоритет ECDHE, отказ от RC4, DES). Настройка строгой транспортной безопасности (HSTS). Важно: объясняем, почему выбран каждый параметр с точки зрения безопасности и совместимости. Упоминаем необходимость использования актуальных сертификатов (Let's Encrypt). Для получения детальных инструкций по работе с сертификатами и полной настройке HTTPS рекомендуем наше полное руководство по SSL/TLS и HTTPS в Nginx.

Оптимальная конфигурация SSL/TLS для баланса безопасности и совместимости

Эта конфигурация обеспечивает высокий уровень безопасности, сохраняя совместимость с большинством современных клиентов. Она соответствует рекомендациям Mozilla SSL Configuration Generator на 2026 год.

server {
    listen 443 ssl http2; # http2 для повышения производительности
    listen [::]:443 ssl http2;
    server_name example.com www.example.com;

    # Пути к SSL-сертификатам (актуальные, например, от Let's Encrypt)
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # Настройка цепочки доверия (OCSP Stapling)
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    ssl_stapling on;
    ssl_stapling_verify on;

    # Современные и безопасные протоколы. TLS 1.0 и 1.1 устарели и небезопасны.
    ssl_protocols TLSv1.2 TLSv1.3;

    # Приоритетный набор шифров. Обеспечивает Forward Secrecy.
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off; # В TLS 1.3 клиент выбирает шифр

    # Параметры сессий для уменьшения нагрузки при повторных handshake
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    # Диффи-Хеллман параметры для усиления безопасности
    ssl_dhparam /etc/nginx/dhparam.pem; # Генерируется командой: openssl dhparam -out /etc/nginx/dhparam.pem 4096

    # Заголовок HSTS (настраивается в следующем подразделе)
    # add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

    # ... остальная конфигурация (root, location и т.д.)
}

Ключевые пояснения:

  • ssl_protocols TLSv1.2 TLSv1.3: TLS 1.3 обеспечивает большую безопасность и скорость handshake. Поддержка старых, уязвимых протоколов (SSLv3, TLS 1.0, 1.1) отключена.
  • ssl_ciphers: Набор начинается с шифров на основе ECDHE (Elliptic-curve Diffie–Hellman), которые обеспечивают Perfect Forward Secrecy (PFS). Это означает, что даже если злоумышленник получит приватный ключ сервера в будущем, он не сможет расшифровать ранее перехваченный трафик.
  • ssl_stapling on: OCSP Stapling ускоряет проверку отзыва сертификата, повышая безопасность и производительность.
  • ssl_dhparam: Использование уникальных, достаточно длинных (4096 бит) параметров Диффи-Хеллмана критически важно для стойкости ключевого обмена.

Автоматический редирект с HTTP на HTTPS и настройка HSTS

Для принудительного использования защищенного соединения всеми пользователями необходим редирект и заголовок HSTS.

# Сервер-блок, который слушает порт 80 (HTTP) и делает редирект 301 на HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    # Основной редирект для основного домена
    return 301 https://example.com$request_uri;
}

# Дополнительный блок для редиректа с www на non-www (или наоборот) уже на HTTPS
server {
    listen 443 ssl http2;
    server_name www.example.com;
    # ... все настройки SSL как в примере выше ...

    # Редирект с www на non-www
    return 301 https://example.com$request_uri;
}

# Основной HTTPS сервер для example.com (non-www)
server {
    listen 443 ssl http2;
    server_name example.com;
    # ... настройки SSL ...

    # Заголовок HTTP Strict Transport Security (HSTS)
    # Информирует браузер, что этот сайт должен загружаться только по HTTPS.
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
    # Параметры:
    # max-age=63072000 — срок действия политики (2 года).
    # includeSubDomains — политика применяется ко всем поддоменам.
    # preload — НЕ добавляйте эту директиву, пока не зарегистрируете домен в списке предзагрузки HSTS (hstspreload.org).
    # always — заголовок добавляется ко всем ответам, даже к ошибкам.

    # ... остальная конфигурация сайта ...
}

Важное предупреждение: Директиву preload в HSTS следует добавлять только после тщательного тестирования и регистрации домена в официальном списке предзагрузки. Её удаление из этого списка — крайне долгий процесс. Для более детального изучения современных практик безопасности рекомендуем наше руководство «Защита Nginx в 2026».

Производительность: кеширование статики и ограничение скорости запросов

Два ключевых сценария оптимизации. 1) Кеширование: настройка location для статических файлов с директивами expires, add_header Cache-Control. Объяснение разницы между статикой и динамическим контентом. 2) Rate Limiting: использование limit_req_zone и limit_req для ограничения запросов к API или форме логина. Примеры с разными зонами (по IP, по ключу API).

Эффективное кеширование статических файлов: снижаем нагрузку в разы

Правильное кеширование CSS, JS, изображений и шрифтов на стороне клиента и прокси-сервера — самый простой способ ускорить сайт и снизить нагрузку на диск.

http {
    # ... другие настройки из базового шаблона ...

    # Определяем зону для прокси-кеширования (опционально, для кеширования на стороне сервера)
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;

    server {
        # ... настройки server ...

        # Location для статических файлов с долгим кешированием на стороне клиента
        location ~* \.(jpg|jpeg|png|gif|ico|webp|svg|svgz|mp4|webm|ogg|mp3|wav|ttf|otf|woff|woff2|eot)$ {
            expires 365d; # Браузер будет хранить файл в кеше 1 год
            add_header Cache-Control "public, immutable";
            # 'immutable' говорит браузеру, что файл не изменится, и не нужно проверять обновления.
            # Подходит для версионированных файлов (style.a1b2c3.css).
            access_log off; # Отключаем логирование статики для уменьшения нагрузки на диск I/O
        }

        location ~* \.(css|js)$ {
            expires 30d;
            add_header Cache-Control "public";
            # Для неверсионированных CSS/JS лучше не использовать 'immutable'
        }

        # Отключение кеширования для разработки (например, для staging-окружения)
        # location ~* \.(css|js|jpg|jpeg|png|gif)$ {
        #     expires -1;
        #     add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate";
        # }

        # Пример прокси-кеширования ответов от бэкенда (для редко меняющегося контента)
        location /api/catalog/ {
            proxy_pass http://backend;
            proxy_cache my_cache;
            proxy_cache_key "$scheme$request_method$host$request_uri";
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;
            add_header X-Cache-Status $upstream_cache_status;
        }
    }
}

Ключевые пояснения:

  • expires 365d: Устанавливает HTTP-заголовок Expires с датой истечения срока действия кеша в будущем. Браузер не будет запрашивать этот файл с сервера до истечения срока.
  • add_header Cache-Control "public, immutable": Современный и более приоритетный (чем Expires) заголовок. public — ресурс можно кешировать публично (например, в CDN). immutable — указывает, что контент никогда не меняется, что позволяет браузеру пропускать условные запросы.
  • proxy_cache_path: Определяет зону и параметры для кеширования ответов от бэкенда прямо на диске Nginx. Это мощный инструмент для разгрузки динамических приложений.

Настройка Rate Limiting в Nginx для защиты API

Модуль ngx_http_limit_req_module позволяет защитить приложение от DDoS-атак, брутфорса и злоупотреблений, ограничивая количество запросов с одного IP-адреса или по другому ключу.

http {
    # Определяем зону для ограничения запросов (rate limit zone).
    # Название зоны: 'limit_by_ip', размер: 10 мегабайт.
    # Ключ: $binary_remote_addr (IP-адрес клиента в бинарном формате, занимает меньше места).
    # Частота: 10 запросов в секунду (rate=10r/s).
    limit_req_zone $binary_remote_addr zone=limit_by_ip:10m rate=10r/s;

    # Зона для ограничения по ключу API (если он передается в заголовке)
    limit_req_zone $http_x_api_key zone=limit_by_api_key:10m rate=100r/m;

    server {
        # ...

        # Применяем ограничение ко всему сайту, но с большим лимитом
        location / {
            limit_req zone=limit_by_ip burst=20 nodelay;
            # burst=20 — разрешает до 20 запросов сверх лимита, они будут обработаны с задержкой.
            # nodelay — запросы в пределах burst обрабатываются без задержки, но счетчик заполнения зоны все равно ведется.
            proxy_pass http://backend;
        }

        # Строгое ограничение для API
        location /api/v1/ {
            # 5 запросов в секунду с одного IP
            limit_req zone=limit_by_ip burst=5 nodelay;
            proxy_pass http://backend_api;
        }

        # Особо строгое ограничение для эндпоинта входа (логина) — защита от брутфорса
        location /api/v1/auth/login {
            # 3 запроса в минуту с одного IP
            limit_req zone=limit_by_ip burst=2 delay=3;
            # delay=3 — первые 3 запроса сверх лимита (burst) будут обработаны с задержкой, остальные отклонены с кодом 503.
            proxy_pass http://backend_auth;
            # Возвращаем понятный код ошибки при превышении лимита
            limit_req_status 429; # Too Many Requests
        }

        # Ограничение по ключу API (например, для внешних интеграций)
        location /api/external/ {
            # 100 запросов в минуту на один API-ключ
            limit_req zone=limit_by_api_key burst=30;
            # Если ключ не передан, ограничение не сработает. Нужна дополнительная проверка.
            if ($http_x_api_key = "") {
                return 403;
            }
            proxy_pass http://backend_external;
        }

        # Страница с информацией о превышении лимита (опционально)
        error_page 429 /429.html;
        location = /429.html {
            root /usr/share/nginx/html;
            internal;
        }
    }
}

Ключевые пояснения:

  • limit_req_zone: Определяет зону и правило ограничения в контексте http. Параметр rate может быть в r/s (запросов в секунду) или r/m (в минуту).
  • burst: Разрешает кратковременные всплески трафика сверх установленного лимита. Запросы сверх лимита, но в пределах burst, ставятся в очередь и обрабатываются с задержкой.
  • nodelay / delay: С nodelay запросы в пределах burst обрабатываются сразу (но место в зоне занимают). С delay или без него — с задержкой. Это тонкая настройка поведения при всплесках.
  • limit_req_status 429: Позволяет изменить стандартный код ошибки 503 на более семантически верный 429 (Too Many Requests).

Для комплексной защиты инфраструктуры, включая настройку балансировки нагрузки с health checks, изучите наше руководство «Nginx как балансировщик нагрузки: продвинутая настройка».

Полезные механики: аутентификация, редиректы и обработка ошибок

Каталог готовых решений для частых задач: 1) Базовая HTTP-аутентификация (auth_basic) для закрытия части сайта. 2) Типовые редиректы: с www на non-www (или наоборот), с одного домена на другой, со старого пути на новый (301 Moved Permanently). 3) Кастомизация страниц ошибок (error_page 404 /404.html;). Для каждого — минимальный рабочий пример с пояснением.

Базовая HTTP-аутентификация для админ-зон и staging

Простой и быстрый способ ограничить доступ к staging-окружению, админ-панели или любой другой директории.

# 1. Создаем файл с логинами и паролями (зашифрованными)
# Утилита htpasswd (пакет apache2-utils или httpd-tools)
# sudo htpasswd -c /etc/nginx/.htpasswd admin
# Затем вводим пароль. Для добавления второго пользователя без ключа -c:
# sudo htpasswd /etc/nginx/.htpasswd developer

server {
    # ...

    location /admin/ {
        # Включаем базовую аутентификацию
        auth_basic "Administration Area"; # Текст в диалоговом окне браузера
        auth_basic_user_file /etc/nginx/.htpasswd; # Путь к файлу с учетными данными

        # Проксирование на бэкенд после успешной аутентификации
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # Аналогично для staging-окружения
    location /staging/ {
        auth_basic "Staging Environment";
        auth_basic_user_file /etc/nginx/.htpasswd_staging;
        proxy_pass http://localhost:3000;
    }
}

Ключевые пояснения:

  • auth_basic: Включает базовую HTTP-аутентификацию. Указанный текст отображается в диалоговом окне браузера.
  • auth_basic_user_file: Указывает путь к файлу, созданному утилитой htpasswd, который содержит пары логин:хеш_пароля.
  • Это решение подходит для быстрого ограничения доступа, но для критически важных систем рассмотрите более надежные методы, такие как интеграция с OAuth2 или SSO.

Типовые редиректы и кастомные страницы ошибок

Стандартные задачи по управлению трафиком и улучшению пользовательского опыта.

server {
    listen 80;
    server_name old-site.com www.old-site.com;

    # Редирект 301 (постоянный) со старого домена на новый
    return 301 https://new-site.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    # Редирект с одного URL на другой внутри сайта (например, после редизана)
    location = /old-page.html {
        return 301 /new-page;
    }

    # Кастомные страницы ошибок
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /404.html {
        root /usr/share/nginx/html;
        internal; # Страница доступна только через внутренний редирект Nginx
    }

    location = /50x.html {
        root /usr/share/nginx/html;
        internal;
    }
}

Ключевые пояснения:

  • return 301: Постоянный редирект (Moved Permanently). Поисковые системы переносят вес со старого URL на новый.
  • error_page: Позволяет указать кастомный HTML-файл для отображения при определенных кодах ошибок.
  • internal: Директива делает location доступным только для внутренних редиректов Nginx (например, при срабатывании error_page), предотвращая прямой доступ по URL.

Частые ошибки и их решение

На основе реального опыта внедрения приведенных конфигураций.

  1. WebSocket-соединения не работают (ошибка 400 или соединение сбрасывается).
    Причина: Чаще всего забывают добавить обязательные заголовки Upgrade и Connection или не устанавливают proxy_http_version 1.1.
    Решение: Убедитесь, что в location для WebSocket присутствуют все три директивы:
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    Также проверьте увеличенные таймауты (proxy_read_timeout).
  2. Ошибка SSL: "SSL_CTX_set_tmp_dh failed" или предупреждения о слабых параметрах DH.
    Причина: Отсутствует или устарел файл параметров Диффи-Хеллмана (ssl_dhparam).
    Решение: Сгенерируйте новый файл и укажите на него в конфигурации:
    sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096
    И добавьте в SSL-блок: ssl_dhparam /etc/nginx/dhparam.pem;
  3. Rate Limiting не работает или срабатывает слишком агрессивно.
    Причина: Зона limit_req_zone определена внутри блока server вместо http, или используется ключ $remote_addr (более объемный) вместо $binary_remote_addr.
    Решение: Убедитесь, что limit_req_zone находится в контексте http { ... }. Используйте $binary_remote_addr для экономии памяти. Проверьте логи Nginx (error.log) на наличие сообщений об исчерпании зоны.

Эти готовые конфигурационные блоки покрывают большинство стандартных задач по настройке Nginx для веб-приложений и API в 2026 году. Они служат надежной основой, которую можно адаптировать под конкретные требования вашего проекта. Для углубленного изучения работы Nginx в качестве обратного прокси рекомендуем наше руководство по настройке Nginx Reverse Proxy.

Поделиться:
Сохранить гайд? В закладки браузера