Установка Nginx Proxy Manager — 2-минутное руководство по установке
Ваши сервисы в настоящее время живут по уродливым адресам, например 192.168.1.50:8080. Nginx Proxy Manager превращает их в чистые имена, такие как app.yourdomain.com, с бесплатным HTTPS, которые устанавливаются с помощью одного файла Docker Compose и управляются с помощью простой веб-панели вместо написанных вручную файлов конфигурации.
📑Главы
- Что делает обратный прокси-сервер: одна дверь для всех ваших услуг.
- Что вам нужно перед началом работы: Docker, домен и доступные порты.
- Перед установкой чего-либо укажите DNS своего домена на сервере.
- Создайте папку и файл docker-compose.yml
- Запустите Nginx Proxy Manager одной командой
- Первый вход в систему – шаг администратора, который все делают неправильно.
- Создайте свой первый прокси-хост, поле за полем.
- Получите бесплатный сертификат Lets Encrypt HTTPS и включите принудительное SSL
📋 Обзор и пошаговое руководство
Что вам нужно перед началом
Прежде чем Nginx Proxy Manager (NPM) сможет работать, должны существовать три вещи. Во-первых, Linux-сервер или ПК с уже установленными и работающими Docker и Docker Compose — NPM работает как контейнер, а не как обычная программа. Во-вторых, доменное имя, DNS которого вы можете редактировать, поскольку у каждого сервиса есть свой поддомен. В-третьих, ваш маршрутизатор или облачный брандмауэр должен иметь возможность перенаправлять порты 80 и 443 на этот компьютер.
Сначала направьте DNS вашего домена на сервер
NPM маршрутизирует трафик по имени, а Lets Encrypt выдает сертификаты только для имен, которые явно указывают на ваш компьютер, поэтому имя должно быть разрешено, прежде чем вы что-либо на нем построите. У вашего регистратора или узла DNS добавьте запись: имя — это только слово поддомена (например, app), а значение — общедоступный IP-адрес вашего сервера. Каждая служба получает свою собственную запись, и все они могут указывать на один и тот же IP-адрес — NPM позже разделяет службы по имени. Во время тестирования установите короткое значение TTL, например 300 секунд, чтобы ошибки исчезали за считанные минуты, а не часы.
Докажите это, прежде чем продолжить: убедитесь, что имя разрешается в ваш общедоступный IP-адрес из внешней сети (например, с вашего телефона с выключенным Wi-Fi). Запрос сертификата против неработающего DNS. Попытки шифрования Lets Encrypt и повторяющиеся неудачи могут ограничить вашу скорость на несколько часов. Порядок имеет значение: сначала DNS, затем прокси-хост, затем сертификат.
Создайте папку и создайте файл
Создайте папку для NPM на сервере и сохраните в ней файл ниже как docker-compose.yml. Этот единственный файл представляет собой полную установку. Название изображения является официальным изображением сообщества. Порты 80 и 443 — это общедоступные двери, порт 81 — панель администратора, а на двух томах находится вся ваша установка: ./data содержит базу данных со всеми вашими прокси-хостами, а ./letsencrypt содержит ваши сертификаты. Потеряйте эти две папки, и вы потеряете всю настройку — создайте их резервную копию, как только все заработает.
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '443:443'
- '81:81'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Строка restart: if-stopped автоматически возвращает NPM после перезагрузки.
Запустите прокси-менеджер Nginx.
Из этой папки выполните команду запуска. Docker загружает образ и запускает контейнер в фоновом режиме.
docker compose up -d
Проверьте, что он работает:
docker ps
Вы должны увидеть контейнер с портами 80, 443 и 81. На небольшом сервере первый запуск занимает минуту или две, пока создается база данных. Если контейнер продолжает перезапускаться, в журналах причина отображается простым языком:
docker compose logs
В девяти случаях из десяти цикл перезапуска — это порт, который уже используется чем-то еще на хосте — обычно это старый веб-сервер, который все еще работает.
Первый вход в систему — немедленно защитите учетную запись администратора
Откройте админ-панель в браузере своей сети:
http://your-server-ip:81
Сделайте это в первую минуту. В зависимости от сборки NPM либо просит вас заменить общеизвестные данные администратора при первом входе в систему вашим собственным адресом электронной почты и надежным паролем, либо — в более новых сборках без учетной записи по умолчанию — администратора создает тот, кто первым откроет страницу администратора. В любом случае правило одно и то же: создайте свою собственную учетную запись администратора в момент запуска контейнера, прежде чем создавать что-либо еще, и используйте настоящий почтовый ящик — электронные письма NPM, в которых говорится о проблемах с сертификатами.
Создайте свой первый прокси-хост
В NPM откройте Хосты → Прокси-хосты → Добавить прокси-хост и заполните форму одним предложением — «это имя принадлежит этой внутренней службе»:
Доменные имена: app.yourdomain.com — точное общедоступное имя из шага 2, которое уже должно быть разрешено вашему серверу.
Схема: http для большинства домашних и офисных приложений. Схема описывает соединение между NPM и внутренней службой, а не то, что используют посетители — NPM обеспечивает общедоступное шифрование у двери. Выбирайте https здесь только в том случае, если само внутреннее приложение поддерживает HTTPS.
Переслать имя хоста/IP: внутренний адрес службы, например 192.168.1.50.
Порт пересылки: порт, который фактически прослушивает служба, например 8080, а не 80 или 443; это двери НПМ, а не службы.
Включите параметр Блокировать распространенные эксплойты и нажмите «Сохранить». Проверьте немедленно, открыв имя в браузере — в идеале со своего телефона с отключенным Wi-Fi, чтобы проверить реальный общедоступный путь.
localhost неверен (внутри контейнера NPM localhost означает сам NPM) — используйте IP-адрес локальной сети сервера с опубликованным портом или поместите оба контейнера в одну и ту же сеть Docker и используйте имя контейнера.Получите бесплатный HTTPS-сертификат Lets Encrypt
Делайте это только после того, как простой хост из шага 6 уже работает — HTTPS на сломанном хосте дает вам сломанный хост с сертификатом и вдвое больше мест для поиска неисправности. Откройте тот же прокси-хост, перейдите на вкладку SSL, установите для параметра SSL-сертификат значение Запросить новый SSL-сертификат, включите Принудительное SSL и Поддержку HTTP/2, согласитесь с Условиями использования Lets Encrypt и сохраните. Перезагрузите сайт — теперь браузер должен отображать замок на https.
Как это работает: Lets Encrypt доказывает, что вы контролируете имя, запрашивая ваш сервер через общедоступный Интернет через порт 80 показать одноразовый токен (запрос HTTP-01). Вот почему DNS, указывающий на вас, и доступный порт 80 не подлежат обсуждению — если произойдет сбой любого из них, запрос не будет выполнен, и ошибка будет в настройке, а не в Lets Encrypt. Принудительный SSL автоматически перенаправляет каждого посетителя http на https; без него незашифрованная дверь останется открытой рядом с зашифрованной.
🏷️Переменные и ключевые слова поиска по теме
🎙️ Полная расшифровка — нажмите, чтобы развернуть.
__TOK_34__
__TOK_35__
__TOK_36__
❓ Часто задаваемые вопросы
Это руководство на 100 % бесплатно?
__TOK_37__
Могут ли новички следовать этому руководству?
__TOK_38__
Где я могу задать вопросы, если застрял?
__TOK_39__