Установка Nginx Proxy Manager: Reverse Proxy с веб-интерфейсом
Установка Nginx Proxy Manager через Docker, автоматическое обновление SSL-сертификатов, настройка proxy host, списки доступа, редиректы, потоки и пользовательские locations.
Содержание
Установка 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
# 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:
docker compose up -d
docker ps | grep nginx-proxy-manager
Первый вход
http://IP_СЕРВЕРА:81
Учётные данные по умолчанию:
Email: admin@example.com
Пароль: changeme
При первом входе вам будет предложено сменить пароль и email.
Добавление Proxy Host
Базовый Proxy Host
- Proxy Hosts → Add Proxy Host
- Domain Names:
app.example.com - Scheme:
http - Forward Hostname / IP:
192.168.1.10 - Forward Port:
3000 - Block Common Exploits: Включить
- Websockets Support: Включить для WebSocket-приложений
Добавление SSL-сертификата
- SSL Certificate: Request a new SSL Certificate
- Force SSL: Включить
- HTTP/2 Support: Включить
- HSTS Enabled: Включить
- Save
Proxy с Docker-сетью
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
- Access Lists → Add Access List
- Name:
Только админ
Во вкладке Access:
Allow: 192.168.1.0/24
Deny: all
HTTP Basic Authentication
Во вкладке Authorization:
Имя пользователя: admin
Пароль: НадёжныйПароль123!
Redirection Host
- Redirection Hosts → Add Redirection Host
- Domain Names:
old.example.com - Forward Domain:
new.example.com - HTTP Code:
301 - Preserve Path: Включить
Stream Host (TCP/UDP Proxy)
- Streams → Add Stream
- Incoming Port:
25565 - Forward Host:
192.168.1.50 - Forward Port:
25565 - TCP Forwarding: Включить
Пользовательская конфигурация Nginx
Вкладка Advanced
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-сертификат
- SSL Certificates → Add SSL Certificate
- Domain Names:
*.example.com - Use a DNS Challenge: Включить
- DNS Provider: Cloudflare, DigitalOcean и т.д.
- Credentials: Введите API-токен
Резервное копирование и восстановление
# Резервное копирование данных 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
Обновление
docker compose pull
docker compose up -d
docker image prune -f
Рекомендации по безопасности
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.
Связанные статьи
Инструменты мониторинга серверов: Grafana, Prometheus и Netdata
Настройка стека Prometheus + Grafana, Netdata, node_exporter, правила оповещений, создание дашбордов и мониторинг метрик сервера.
Настройка прокси-сервера: руководство по Squid и HAProxy
Squid forward proxy, HAProxy балансировщик нагрузки, SSL-терминация, правила ACL, кэширование, проверки состояния и высокая доступность.
Установка CrowdSec: Движок безопасности на основе сообщества
Установка CrowdSec, настройка bouncer, обнаружение атак, блокировка IP, дашборд, управление коллекциями и сценариями.