Полное руководство по созданию безопасного обратного прокси-сервера Nginx
Создание безопасного, надежного и масштабируемого обратного прокси-сервера критически важно для компаний и ИТ-специалистов, управляющих веб-сайтами с высокой посещаемостью или сложными приложениями. Nginx, веб-сервер с открытым исходным кодом и обратный прокси-сервер, — это мощное решение для маршрутизации, оптимизации и защиты трафика к вашим внутренним сервисам. В этом руководстве мы подробно рассмотрим процесс настройки надежного обратного прокси-сервера с использованием Nginx в Ubuntu 24.04, включая такие важные этапы, как шифрование TLS, ограничение скорости и интеграция с Cloudflare.
Если вы управляете веб-сайтами корпоративного уровня, платформами электронной коммерции или медиасерверами, это руководство поможет вам повысить производительность, обеспечить бесперебойную работу и защитить свою инфраструктуру от уязвимостей.
Что такое обратный прокси-сервер Nginx?
Обратный прокси-сервер Nginx выступает в роли промежуточного сервера между клиентами и бэкенд-сервисами. Он перенаправляет клиентские запросы на соответствующий бэкенд-сервер, оптимизируя распределение нагрузки, повышая безопасность и обеспечивая такие функции, как кэширование, терминация SSL-запросов и фильтрация трафика. Такая конфигурация особенно полезна для хостинга медиасерверов, многосайтовых приложений и сервисов за брандмауэрами.
sbb-itb-59e1987
Зачем вам нужен обратный прокси-сервер
Обратный прокси-сервер обеспечивает несколько ключевых преимуществ:
- Повышенная безопасность: Скрывает 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
Создание пользовательских файлов конфигурации
Для большей гибкости и безопасности используйте файлы сниппетов для хранения определённых конфигураций. Создайте следующие файлы:
- Заголовки безопасности:
Определите заголовки безопасности для усиления защиты:sudo nano /etc/nginx/snippets/security-headers.confadd_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; - Настройки прокси:
Оптимизируйте длинные потоки и предотвращайте медленные ответы:sudo nano /etc/nginx/snippets/proxy.confproxy_connect_timeout 60 с; proxy_send_timeout 60 с; proxy_read_timeout 60 с; - Ограничения по скорости:
Уменьшите количество чрезмерных запросов:sudo nano /etc/nginx/snippets/rate-limit.conflimit_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:
- Загрузить
.debпакет со страницы Cloudflare на GitHub. - Установить пакет:
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
Использование: Встроено для справки. Краткие цитаты используются для комментариев/обзоров.
Похожие записи в блоге
- Освоение конфигураций Nginx для оптимальной производительности веб-сервера
- Освоение конфигурации NGINX: как Serverion открывает путь к успеху в сфере веб-хостинга B2B
- Перемотка конфигурации NGINX: Serverion возрождает забытое искусство настройки кэша прокси-сервера
- Забытый рубеж конфигурации NGINX: погружение Serverion в FastCGI-микрокэшинг