Если вы когда-либо пытались поднять несколько веб-сервисов на одном сервере (даже дома на мини-ПК или VPS), то наверняка сталкивались с задачей: как удобно и безопасно «разруливать» входящие запросы на разные приложения? Традиционный способ — писать конфиги для Nginx или Apache вручную, а потом еще помнить, где какой SSL, какие прокси-хедеры, где что сломалось… Короче, боль и страдания. Особенно если хочется быстро, просто и с минимумом ручного шаманства.
Вот тут-то и появляется Nginx Proxy Manager — штука, которая позволяет управлять обратным прокси через удобный веб-интерфейс. Без ssh, vi и чтения мануалов на ночь. Давайте разберёмся, как это работает, зачем оно нужно и как поставить всё за 10 минут.
Возможности
- Веб-интерфейс для настройки обратного прокси на базе Nginx
- Поддержка SSL (Let’s Encrypt — автоматом, с автообновлением!)
- Управление редиректами, доступом, аутентификацией
- Логи, статистика, быстрый просмотр ошибок
- Бэкапы, импорт/экспорт конфигов
- Работает с Docker (очень удобно для dev/test/prod)
Что требуется (требования, ос, железо)
- Любая современная ОС с поддержкой Docker (Linux, Windows, MacOS)
- Железо: хватит даже Raspberry Pi 3/4, но лучше что-то с 1+ ГБ RAM
- Открытые порты 80 и 443 (для Let’s Encrypt и внешнего доступа)
- Docker и Docker Compose (желательно свежие версии)
Установка — пошаговая инструкция
- Устанавливаем Docker и Docker Compose.
На Ubuntu:sudo apt update sudo apt install docker.io docker-compose -y sudo systemctl enable --now docker
- Создаём папку для Nginx Proxy Manager.
mkdir ~/nginx-proxy-manager cd ~/nginx-proxy-manager
- Создаём docker-compose.yml:
cat > docker-compose.yml <<EOF version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' environment: DB_SQLITE_FILE: "/data/database.sqlite" volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt EOF
(Если хотите использовать MySQL — смотрите официальную документацию)
- Запускаем контейнер:
docker-compose up -d
- Проверяем, что всё работает.
Открываем браузер: http://your-server-ip:81
Логин по умолчанию:
Email:admin@example.com
Пароль:changeme
(После первого входа смените пароль!)
Использование: команды, варианты, фишки
- Добавление нового прокси-хоста:
- В веб-интерфейсе жмём «Proxy Hosts» → «Add Proxy Host»
- Вводим домен (например,
myapp.mydomain.com
) - Указываем внутренний адрес и порт (например,
172.17.0.1:8080
илиapp:8000
если сервис в Docker) - Ставим галочку «Block Common Exploits»
- Переходим на вкладку SSL, выбираем «Request a new SSL Certificate», соглашаемся на Terms of Service
- Сохраняем — NPM сам получит сертификат и настроит проксирование
- Редиректы и 404: Можно настроить Redirect Hosts для перенаправления с одного домена на другой или на https.
- Access Lists: Ограничение доступа по IP, Basic Auth — всё через GUI.
- Custom Nginx config: В каждом прокси-хосте можно добавить свои директивы (например, для WebSocket, CORS и т.д.).
- Бэкапы: Копируйте папку
./data
— там всё, включая базу и настройки. - Команды управления контейнером:
docker-compose up -d # запуск docker-compose down # остановка docker-compose logs -f # смотреть логи docker-compose restart # перезапуск
Ошибки и как делать не надо
- Не открывайте порт 81 наружу! Это порт админки, ограничьте его фаерволом или через VPN.
- Не храните пароли по умолчанию и не используйте «admin@example.com» — поменяйте сразу!
- Не забывайте делать бэкапы папки
data
— потеряете всё при сбое диска. - Если используете Cloudflare или другой CDN, не блокируйте порты 80/443 для Let’s Encrypt.
- Не запускайте Nginx Proxy Manager на том же порту, что и основной Nginx — будут конфликты.
Пример реального использования
У меня дома стоит мини-сервер (Intel NUC с Ubuntu 22.04), на котором крутится куча всего: Nextcloud, Home Assistant, личный блог на Ghost, Grafana, пару pet-проектов. Раньше для каждого городил отдельный конфиг, постоянно забывал обновлять сертификаты.
Сейчас всё просто: Nginx Proxy Manager в Docker, для каждого сервиса — отдельный прокси-хост в GUI. Сертификаты обновляются сами, можно быстро включить Basic Auth для админки, если надо — добавить кастомные настройки.
Плюс, если надо что-то протестировать — просто добавляю новый контейнер, прокидываю порт, прописываю домен в NPM, и через минуту сервис доступен извне. Не надо перезагружать Nginx, не надо лезть в ssh.
Заключение
Nginx Proxy Manager — отличный инструмент для тех, кто хочет быстро и удобно управлять прокси и SSL для своих сервисов, не заморачиваясь ручными конфигами. Подходит для домашних серверов, pet-проектов и даже для небольших продакшенов. Всё наглядно, просто и надёжно.
Рекомендую ознакомиться с официальным сайтом и репозиторием на GitHub — там есть ответы на все вопросы и примеры.
Если остались вопросы — смело спрашивайте в GitHub Discussions или на реддите.
Ваш отзыв