Обратный прокси на Ubuntu 24.04LTS + Nginx Proxy Manager

Nginx Proxy Manager — это удобный web движок, который упрощает процесс управления обратным прокси сервером nginx.

В этой статье я как можно подробнее опишу процесс инсталляции и настройки обратного прокси сервера Nginx Proxy Manager на Ubuntu 24.04LTS

Содержание статьи

  • Возможности решения
  • Системные требования
  • Настройка маршрутизатора
  • Подготовка сервера
  • Установка Docker
  • Создание папок для проекта
  • Создание конфигурационного файла
  • Создание и запуск Nginx Proxy Manager
  • Обзор Web интерфейса
  • Настройка решения
  • Управление прокси редиректами
  • Управление SSL сертификатами
  • Заключение

Возможности решения

  • Красивый и безопасный интерфейс администратора
  • С ним вы быстро и легко сможете создавать переадресацию по доменным запросам пользователей, перенаправления, потоки и хосты 404, без изнуряющих копаний в конфигурационных файлах Nginx
  • Бесплатный SSL с помощью Let’s Encrypt или предоставьте свои собственные SSL-сертификаты
  • Списки доступа и базовая HTTP-аутентификация для ваших хостов
  • Расширенная конфигурация Nginx доступна для суперпользователей
  • Управление пользователями, разрешения и журнал аудита

Системные требования

  • Процессор: 1 ядро от 1 ГГц
  • Оперативная память: от 1 ГБ
  • Накопитель: от 5 ГБ для LXC и 10 ГБ для полновесной ВМ

Размер развернутого решения в LXC контейнере с Ubuntu 24.04LTS:

Статистика контейнера:

Настройка маршрутизатора

На нашем маршрутизаторе создаем dstnat правило для запросов по портам 80,443 и в адресе получателя указываем наш обратный прокси.

Подготовка сервера

Все действия в системе я произвожу под root:

sudo -s

В случае если у нас виртуальная машина, а не контейнер настраиваем сеть:

Удаляем дефолтные конфиги:

rm /etc/netplan/*.*

Создаем конфигурационный файл:

nano /etc/netplan/config.yaml

network:

ethernets:

ens18:

dhcp4: false

addresses: [192.168.1.200/24]

gateway4: 192.168.1.254

nameservers:

addresses: [192.168.1.201,192.168.1.202]

version: 2

Сохраняем файл, выходим из редактора:

CTRL+O, CTRL+X

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

netplan apply

Обновляем систему:

apt update && apt upgrade -y

Устанавливаем дополнительные пакеты:

apt install mc net-tools curl ca-certificates -y

Установка Docker

Добавим GPG key от репозитория Docker:

Устанавливаем права на директорию:

install -m 0755 -d /etc/apt/keyrings

Скачиваем ключ репозитория:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

Меняем права на файл ключа репозитория:

chmod a+r /etc/apt/keyrings/docker.asc

Добавим репозиторий Docker:

echo \

«deb [arch=$(dpkg —print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \

$(. /etc/os-release && echo «$VERSION_CODENAME») stable» | \

tee /etc/apt/sources.list.d/docker.list > /dev/null

Обновим сведения о пакетах в репозиториях:

apt update

Устанавливаем Docker:

apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Проверяем статус службы Docker:

systemctl status docker

Создание папок для проекта

Создаем каталог под Docker проекты:

mkdir /Docker

Создаем каталог под Nginx Proxy Manager:

mkdir /Docker/Nginx_Proxy

Создаем каталоги для данных:

mkdir /Docker/Nginx_Proxy/{data,letsencrypt}

Создание конфигурационного файла

Приступим к написание конфигурационного docker-compose файла:

nano /Docker/Nginx_Proxy/docker-compose.yml

version: ‘3.9’

services:

app:

image: ‘jc21/nginx-proxy-manager:latest’

restart: unless-stopped

ports:

# В этой секции мы прописываем порты проброса от хоста: к контейнеру

— ’80:80′

— ‘443:443’

— ’81:81′ # WEB Консоль управления Nginx Proxy Manager

volumes:

# В этой секции мы сопоставляем каталоги хоста и контейнера

— ./data:/data

— ./letsencrypt:/etc/letsencrypt

Сохраняем файл и выходим из редактора:

CTRL+O, CTRL+X

Создание и запуск Nginx Proxy Manager

Переходим в каталог /Docker/Nginx_Proxy:

cd /Docker/Nginx_Proxy

Запускаем Docker-compose:

docker compose up -d

Процесс пошел:

Дожидаемся окончания создания и запуска:

Проверяем статус контейнеров:

docker compose ps

Обзор Web интерфейса

Открываем браузер и переходим по адресу:

http://ip_address:81

Администратор по умолчанию:

Email: admin@example.com

Password: changeme

В целях безопасности, система первым делом попросит нас отредактировать учетную запись администратора:

А также установить новый пароль:

На главной странице DashBoard, мы видим статистику по количеству добавленных прокси хостов, узлы редиректа, потоки и отбойники 404:

В системе присутствует журнал аудита:

Раздел пользователей системы:

Раздел управления сертификатами:

Списки доступа к ресурсам:

А также основной раздел Hosts, в которым осуществляются основные настройки по редиректу:

Настройка решения

Заглянем в настройки —> Settings—> выбираем edit чтобы взглянуть, что может предложить система в качестве настроек:

Система спрашивает, что делать если запрос приходит на неизвестный хост:

  • Congratulations Page — стартовая страница nginx
  • 404 Page — ошибка 404
  • No Response (444) — не отвечать на запрос
  • Redirect — переадресация, пример https://yandex.ru
  • Custom Page — выводим свою страницу с сообщением, пример:

Управление SSL сертификатами

Одной из замечательных особенностей Nginx Proxy Manager является встроенное управление SSL-сертификатами. Чтобы настроить SSL для прокси-хоста:

  1. Перейдите в раздел «SSL-сертификаты» на боковой панели.
  2. Нажмите «Добавить SSL-сертификат».
  3. Выберите между «Let’s Encrypt» для бесплатного автоматического продления сертификатов или «Custom» для загрузки собственных сертификатов.
  4. Для Let’s Encrypt:Введите доменные имена, которые вы хотите защитить.
  5. Укажите действительный адрес электронной почты для уведомлений о продлении.
  6. Согласитесь с Условиями предоставления услуг Let’s Encrypt.
  7. Нажмите «Сохранить», чтобы сгенерировать и установить сертификат.

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

Заключение

Я надеюсь статья вам понравилась и вы возьмете решение на заметку, я в свою очередь использую именно это решение, чего и вам желаю.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх