Перейти к основному содержимому
Вернуться в категорию

Установка Nginx Proxy Manager: Reverse Proxy с веб-интерфейсом

Установка Nginx Proxy Manager через Docker, автоматическое обновление SSL-сертификатов, настройка proxy host, списки доступа, редиректы, потоки и пользовательские locations.

Время чтения: 12 мин Мониторинг
nginx proxy managerreverse proxyssldockerвеб-интерфейсlet's encrypt

Содержание

Установка Nginx Proxy Manager: Reverse Proxy с веб-интерфейсом

Nginx Proxy Manager (NPM) — это инструмент с открытым исходным кодом, позволяющий управлять Nginx reverse proxy через удобный веб-интерфейс. Управление SSL-сертификатами, настройка proxy host и контроль доступа доступны без командной строки.

Что такое Nginx Proxy Manager?

Основные возможности:

  • Веб-интерфейс: Удобная панель управления
  • Автоматическое обновление SSL: Бесплатный SSL с Let's Encrypt
  • Proxy Hosts: Настройка reverse proxy
  • Redirection Hosts: URL-перенаправления
  • Stream Hosts: Проброс TCP/UDP портов
  • Access Lists: Контроль доступа по IP и пользователям
  • Custom Locations: Пользовательские блоки location Nginx

Установка через Docker

Конфигурация Docker Compose

hljs yaml
# docker-compose.yml
version: '3.8'
services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - npm_data:/data
      - npm_letsencrypt:/etc/letsencrypt
    environment:
      - TZ=Europe/Moscow

volumes:
  npm_data:
  npm_letsencrypt:
hljs bash
docker compose up -d
docker ps | grep nginx-proxy-manager

Первый вход

http://IP_СЕРВЕРА:81

Учётные данные по умолчанию:
Email:    admin@example.com
Пароль:   changeme

При первом входе вам будет предложено сменить пароль и email.

Добавление Proxy Host

Базовый Proxy Host

  1. Proxy HostsAdd Proxy Host
  2. Domain Names: app.example.com
  3. Scheme: http
  4. Forward Hostname / IP: 192.168.1.10
  5. Forward Port: 3000
  6. Block Common Exploits: Включить
  7. Websockets Support: Включить для WebSocket-приложений

Добавление SSL-сертификата

  1. SSL Certificate: Request a new SSL Certificate
  2. Force SSL: Включить
  3. HTTP/2 Support: Включить
  4. HSTS Enabled: Включить
  5. Save

Proxy с Docker-сетью

hljs yaml
version: '3.8'
services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - npm_data:/data
      - npm_letsencrypt:/etc/letsencrypt
    networks:
      - proxy_network

  webapp:
    image: your-webapp:latest
    container_name: webapp
    expose:
      - "3000"
    networks:
      - proxy_network

networks:
  proxy_network:
    driver: bridge

volumes:
  npm_data:
  npm_letsencrypt:

Списки доступа

Контроль доступа по IP

  1. Access ListsAdd Access List
  2. Name: Только админ

Во вкладке Access:

Allow: 192.168.1.0/24
Deny: all

HTTP Basic Authentication

Во вкладке Authorization:

Имя пользователя: admin
Пароль: НадёжныйПароль123!

Redirection Host

  1. Redirection HostsAdd Redirection Host
  2. Domain Names: old.example.com
  3. Forward Domain: new.example.com
  4. HTTP Code: 301
  5. Preserve Path: Включить

Stream Host (TCP/UDP Proxy)

  1. StreamsAdd Stream
  2. Incoming Port: 25565
  3. Forward Host: 192.168.1.50
  4. Forward Port: 25565
  5. TCP Forwarding: Включить

Пользовательская конфигурация Nginx

Вкладка Advanced

hljs nginx
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size 100M;

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Wildcard SSL-сертификат

  1. SSL CertificatesAdd SSL Certificate
  2. Domain Names: *.example.com
  3. Use a DNS Challenge: Включить
  4. DNS Provider: Cloudflare, DigitalOcean и т.д.
  5. Credentials: Введите API-токен

Резервное копирование и восстановление

hljs bash
# Резервное копирование данных NPM
docker exec nginx-proxy-manager tar -czf /tmp/npm-backup.tar.gz /data /etc/letsencrypt
docker cp nginx-proxy-manager:/tmp/npm-backup.tar.gz ./npm-backup-$(date +%Y%m%d).tar.gz

# Восстановление
docker cp ./npm-backup.tar.gz nginx-proxy-manager:/tmp/
docker exec nginx-proxy-manager tar -xzf /tmp/npm-backup.tar.gz -C /
docker restart nginx-proxy-manager

Обновление

hljs bash
docker compose pull
docker compose up -d
docker image prune -f

Рекомендации по безопасности

hljs bash
ports:
  - '80:80'
  - '443:443'
  - '127.0.0.1:81:81'

# Доступ через SSH-туннель
ssh -L 81:localhost:81 user@server-ip

С Nginx Proxy Manager на серверах REXE вы можете управлять всеми веб-приложениями из одной точки, автоматически получать и обновлять SSL-сертификаты. Веб-интерфейс позволяет настроить профессиональный reverse proxy без работы с конфигурационными файлами Nginx.