Всем привет! Наверняка многие задавались вопросом – как можно осуществить проброс портов так, чтобы извне, на одном внешнем IP адресе, стало доступно несколько сервисов, работающих по HTTP или HTTPS. Этот вопрос может быть особо актуальным для небольших офисов, или домашних лаб. Решается он поднятием реверс прокси.
Существует довольно большое число решений, от дорогущих, так сказать Enterprise Class, до совсем уж собранных на коленке – на голом Nginx или еще на чём то, без каких-либо панелей управления. Сегодня я хочу показать вам, довольно любопытный проект, которым я уже не первый год пользуюсь в своей домашней лабе, и к которому за время использования у меня не возникло ни одного вопроса. Это – Nginx Proxy Manager .
Штука эта представляет из себя надстройку над Nginx, с очень приятным и интуитивным веб интерфейсом. Распространяется продукт в виде контейнеров Docker, за счёт чего установка занимает минут 5, и не требует практически никакого вникания, правок конфигов вручную и т.п.
И так. Давайте приступим к установке. Я ставил на Ubuntu Server 22.04.
В первую очередь, традиционно обновим систему:
apt update apt upgrade
Далее необходимо установить docker:
sudo apt install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install docker-ce
И docker-compose – актуальную версию можно посмотреть на github :
sudo curl -SL https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-linux-x86_64 -o /usr/libexec/docker/cli-plugins/docker-compose sudo chmod +x /usr/libexec/docker/cli-plugins/docker-compose sudo docker compose version
Далее, переходим к установке, непосредственно Nginx Proxy Manager. Создаём файл docker-compose.yml (т.к. это yml – отступы тут имеют значение, имейте ввиду):
nano docker-compose.yml
Содержимое:
version: "3"
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- db
db:
image: 'jc21/mariadb-aria:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./data/mysql:/var/lib/mysql
sudo docker compose up -d
Дожидаемся завершения, и переходим в браузере по адресу вашего сервера, порт 81.
Дефолтные имя пользователя и пароль - [email protected] и changeme
При первом входе, будет предложено изменить адрес почты и пароль
Предлагаю бегло пробежаться по интерфейсу.
На вкладке dashboard собрана обобщённая информация по вашим правилам.
При нажатии на плитку, попадаем в интерфейс управления. Основная, конечно, это Proxy Hosts - именно она отвечает за reverse proxy.
В Redirection hosts можно настроить перенаправление доменов.
В Streams можно добавить потоки (может быть нужно, например, если хостите у себя какой-нибудь игровой сервер).
В 404 hosts – можно указать кастомные страницы ошибки.
Во вкладке Hosts, по сути, идёт дублирование Dashboard.
В Access Lists – можно добавить правила доступа, например разрешить доступ только с определенных адресов, либо можно сделать дополнительную авторизацию при помощи Nginx для определенных адресов.
Во вкладке SSL Certificates можно управлять вашими SSL сертификатами.
Во вкладке users можно добавить дополнительных пользователей для управления системой.
В Audit logs – ведётся журнал действий администратора.
В settings можно настроить дефолтный сайт, который должен открываться – можно настроить что б открывался сайт управления реверс прокси, страница 404, редирект куда-нибудь, либо кастомная страница.
В общем и целом. Как я уже говорил, я не первый год пользуюсь данной системой, и работает она прекрасно, проблем у меня пока не возникло, за счёт простоты интерфейса, не нужно заморачиваться ни с сертификатами их перевыпуском, ни с конфигами Nginx.
Как по мне, то это практически идеальная система управления reverse proxy для дома или небольших организаций. Большущие спасибо, респект и уважуха разработчикам.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.
Если вам помогла статья, вы можете >>отблагодарить автора<<