Свяжитесь с нами

info@serverion.com

Позвоните нам

+1 (302) 380 3902

Полное руководство по созданию безопасного обратного прокси-сервера Nginx

Полное руководство по созданию безопасного обратного прокси-сервера Nginx

Создание безопасного, надежного и масштабируемого обратного прокси-сервера критически важно для компаний и ИТ-специалистов, управляющих веб-сайтами с высокой посещаемостью или сложными приложениями. Nginx, веб-сервер с открытым исходным кодом и обратный прокси-сервер, — это мощное решение для маршрутизации, оптимизации и защиты трафика к вашим внутренним сервисам. В этом руководстве мы подробно рассмотрим процесс настройки надежного обратного прокси-сервера с использованием Nginx в Ubuntu 24.04, включая такие важные этапы, как шифрование TLS, ограничение скорости и интеграция с Cloudflare.

Если вы управляете веб-сайтами корпоративного уровня, платформами электронной коммерции или медиасерверами, это руководство поможет вам повысить производительность, обеспечить бесперебойную работу и защитить свою инфраструктуру от уязвимостей.

Что такое обратный прокси-сервер Nginx?

Обратный прокси-сервер Nginx выступает в роли промежуточного сервера между клиентами и бэкенд-сервисами. Он перенаправляет клиентские запросы на соответствующий бэкенд-сервер, оптимизируя распределение нагрузки, повышая безопасность и обеспечивая такие функции, как кэширование, терминация SSL-запросов и фильтрация трафика. Такая конфигурация особенно полезна для хостинга медиасерверов, многосайтовых приложений и сервисов за брандмауэрами.

Зачем вам нужен обратный прокси-сервер

Обратный прокси-сервер обеспечивает несколько ключевых преимуществ:

  • Повышенная безопасность: Скрывает IP-адреса внутренних серверов и включает шифрование через TLS/SSL.
  • Балансировка нагрузки: Равномерно распределяет трафик по нескольким внутренним серверам.
  • Оптимизация: Уменьшает задержку и повышает эффективность использования ресурсов.
  • Масштабируемость: облегчает управление сценариями с большим трафиком.
  • Простота управления: Упрощает настройку нескольких внутренних служб в рамках единого домена.

В этом уроке мы покажем, как:

  • Настройте Nginx как обратный прокси-сервер.
  • Защитите свою настройку с помощью TLS-сертификатов Let's Encrypt.
  • Настройте расширенные оптимизации, такие как ограничение скорости и переадресацию запросов.
  • Интегрируйте Cloudflare, чтобы обойти ограничения портов интернет-провайдера.

Шаг 1: Установка Nginx и Certbot в Ubuntu 24.04

Обновите свою систему

Перед установкой любого программного обеспечения убедитесь, что ваша система обновлена:

sudo apt update && sudo apt upgrade 

Установить Nginx и Certbot

Для установки Nginx и Certbot с плагином Nginx используйте следующие команды:

sudo apt install nginx -y sudo apt install certbot python3-certbot-nginx -y 

Проверить установку

Убедитесь, что Nginx запущен:

sudo systemctl status nginx 

Чтобы проверить доступ, определите IP-адрес вашего сервера:

ip a 

Откройте IP-адрес в браузере. В случае успеха вы увидите стандартную страницу приветствия Nginx.

Шаг 2: Настройка правил брандмауэра

Включить простой брандмауэр (UFW)

UFW позволяет легко управлять правилами брандмауэра:

sudo ufw разрешить «Nginx Full» sudo ufw разрешить OpenSSH sudo ufw включить 

Проверьте состояние вашего брандмауэра, чтобы убедиться, что открыты нужные порты:

статус sudo ufw 

Шаг 3: Настройка конфигурации прокси-сервера Nginx

Создание пользовательских файлов конфигурации

Для большей гибкости и безопасности используйте файлы сниппетов для хранения определённых конфигураций. Создайте следующие файлы:

  1. Заголовки безопасности:
    sudo nano /etc/nginx/snippets/security-headers.conf 
    Определите заголовки безопасности для усиления защиты:
    add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; 
  2. Настройки прокси:
    sudo nano /etc/nginx/snippets/proxy.conf 
    Оптимизируйте длинные потоки и предотвращайте медленные ответы:
    proxy_connect_timeout 60 с; proxy_send_timeout 60 с; proxy_read_timeout 60 с; 
  3. Ограничения по скорости:
    sudo nano /etc/nginx/snippets/rate-limit.conf 
    Уменьшите количество чрезмерных запросов:
    limit_req_zone $binary_remote_addr зона = mylimit: 10m скорость = 10r/s; 

Включить фрагменты в основную конфигурацию

Отредактируйте основную конфигурацию Nginx:

судо нано /etc/nginx/nginx.conf 

Добавьте следующее под http блокировать:

включить /etc/nginx/snippets/*.conf; 

Перезапустите Nginx, чтобы изменения вступили в силу:

sudo systemctl reload nginx 

Шаг 4: Настройка обратного прокси-сервера для внутреннего сервиса

Создать виртуальный хост

Создайте файл конфигурации для вашей внутренней службы:

sudo nano /etc/nginx/sites-available/jellyfin 

Пример конфигурации медиасервера Jellyfin:

сервер { listen 80; имя_сервера jelly.yourdomain.com; местоположение / { proxy_pass http://10.10.0.112:8096; include /etc/nginx/snippets/proxy.conf; } } 

Включите сайт, создав символическую ссылку:

sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/ 

Проверьте и перезагрузите Nginx:

sudo nginx -t sudo systemctl reload nginx 

Шаг 5: Защита вашего домена с помощью Let's Encrypt TLS

Чтобы защитить свой домен, воспользуйтесь Let's Encrypt для выпуска бесплатных сертификатов:

sudo certbot --nginx -d jelly.yourdomain.com 

Certbot автоматически настраивает SSL в файле вашего сайта Nginx. Чтобы сертификаты обновлялись автоматически, убедитесь, что таймер systemd активен:

sudo systemctl list-timers | grep certbot 

Шаг 6: Интеграция Cloudflare для дополнительной безопасности и обхода портов интернет-провайдера

Установить Cloudflared

Cloudflared создает защищенный туннель для маршрутизации трафика через Cloudflare, обходя ограничения интернет-провайдера на портах 80 и 443:

  1. Загрузить .deb пакет со страницы Cloudflare на GitHub.
  2. Установить пакет:
    sudo dpkg -i cloudflared-version.deb 

Настроить туннель

Авторизуйтесь с помощью своей учетной записи Cloudflare:

вход в туннель Cloudflared 

Создайте новый туннель:

туннель Cloudflared создай мой туннель 

Отредактируйте файл конфигурации Cloudflare:

sudo nano /etc/cloudflared/config.yml 

Пример конфигурации:

туннель: my-tunnel credential-file: /home/user/.cloudflared/my-tunnel.json входящий трафик: - имя хоста: jelly.yourdomain.com сервис: http://localhost:8096 - сервис: http_status:404 

Запустите и включите службу туннеля:

sudo systemctl включить cloudflared sudo systemctl запустить cloudflared 

Ключевые выводы

  • Обратный прокси-сервер Nginx: Необходим для безопасной маршрутизации трафика и оптимизации внутренних служб.
  • TLS-шифрование: Используйте Let's Encrypt для защиты своих доменов с помощью бесплатных SSL-сертификатов.
  • Правила брандмауэра: Откройте необходимые порты для HTTP (80), HTTPS (443) и SSH (22).
  • Оптимизация безопасности: Реализуйте заголовки и ограничение скорости для предотвращения атак.
  • Интеграция с Cloudflare: Используйте туннели Cloudflared для безопасного и удобного для интернет-провайдеров хостинга.
  • автоматизация: Системные таймеры обеспечивают автоматическое обновление SSL-сертификатов.

Заключение

Настройка безопасного обратного прокси-сервера Nginx требует внимания к деталям и тщательной настройки, но результат стоит затраченных усилий. Независимо от того, размещаете ли вы медиасерверы, такие как Jellyfin, или управляете корпоративными приложениями, это руководство предоставит вам инструменты и знания для создания высокозащищённой и эффективной среды. Благодаря таким функциям, как TLS, туннели Cloudflare и расширенные возможности оптимизации, ваша инфраструктура готова к современным требованиям.

Источник: «Перестаньте выставлять свои приложения напоказ! Создайте безопасный обратный прокси-сервер Nginx!» – KeepItTechie, YouTube, 19 августа 2025 г. – https://www.youtube.com/watch?v=MzbhS2S7H_g

Использование: Встроено для справки. Краткие цитаты используются для комментариев/обзоров.

Похожие записи в блоге

ru_RU