Як зробити зворотний проксі для ваших сайтів (Nginx Proxy Manager)

Напевно багато хто задавався питанням про те, як можна провести кидок портів так, щоб ззовні, на одному зовнішньому 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 При першому вході вам буде запропоновано змінити адресу електронної пошти та пароль

Пропоную вам швидко пробігтися по інтерфейсу. Вкладка інформаційної панелі містить узагальнену інформацію про ваші правила.

Коли ви натискаєте на плитку, ви потрапляєте в інтерфейс управління. Основним з них, звичайно ж, є Proxy Hosts – він відповідає за зворотний проксі.

У розділі Перенаправлення хостів можна налаштувати переадресацію доменів.

Ви можете додавати стріми в Streams (це може знадобитися, наприклад, якщо ви розміщуєте ігровий сервер).

У 404 hosts – можна вказати користувацькі сторінки помилок.

У вкладці Hosts, по суті, відбувається дублювання Dashboard. У списках доступу – можна додати правила доступу, наприклад, дозволити доступ тільки з певних адрес, або можна зробити додаткову авторизацію за допомогою Nginx для певних адрес.

На вкладці «Сертифікати SSL» можна керувати своїми SSL-сертифікатами.

У вкладці «Користувачі» ви можете додати додаткових користувачів для керування системою.

У журналах аудиту ведеться журнал дій адміністратора.

У налаштуваннях можна налаштувати сайт за замовчуванням, який повинен відкриватися – можна налаштувати сайт зворотного управління проксі, сторінку 404, редирект кудись або відкриту кастомну сторінку.

Взагалі. Як я вже говорив, я користуюся цією системою вже кілька років, і вона працює відмінно, ніяких проблем у мене поки не виникало, завдяки простоті інтерфейсу не потрібно морочитися ні з їх перевипуском сертифікатів, ні з конфігами Nginx.

Попередня стаття