Налаштування реверс проксі вручну з Nginx вимагає знання командного рядка, що займає до 2 годин на базову конфігурацію, але Nginx Proxy Manager (NPM) автоматизує цей процес через зручний веб-інтерфейс.
Контекст і проблема
Самохостинг сервісів, таких як Nextcloud, Jellyfin, або Mattermost, стає все популярнішим, але потребує надійного реверс проксі для маршрутизації трафіку та забезпечення HTTPS. Вручну налаштовувати Nginx для кожного сервісу – це рутинна та схильна до помилок задача, особливо якщо у вас декілька сервісів (наприклад, 5+). Без реверс проксі, кожен сервіс потребує окремого домену та SSL сертифікату, що ускладнює керування.
Практична реалізація
Nginx Proxy Manager – це Docker контейнер, який надає веб-інтерфейс для управління конфігурацією Nginx. Встановлення займає менше 5 хвилин.
# Створення Docker мережі для NPM docker network create --driver bridge npm-network # Запуск Docker контейнера Nginx Proxy Manager docker run -d \ --name npm \ --network npm-network \ -p 80:80 \ -p 443:443 \ -p 81:81 \ -v npm_config:/data/nginx/proxy/config \ -v npm_letsencrypt:/data/nginx/letsencrypt \ jc21/nginx-proxy-manager:latest # Отримання IP адреси контейнера docker inspect npm | grep IPAddress # Відкриття в браузері за IP адресою та портом 81 (наприклад, 192.168.1.100:81) # Установка початкових облікових даних (admin@example.com:changeme)
Після запуску, ви отримаєте доступ до веб-інтерфейсу NPM за допомогою IP адреси вашого сервера та порту 81. Він надає графічний інтерфейс для додавання проксі-серверів, налаштування доменних імен, автоматичного отримання SSL сертифікатів за допомогою Let’s Encrypt, та керування перенаправленнями.
Типові помилки
- Помилка 1: Неправильні DNS записи. Симптом: SSL сертифікат не отримується, або сайт не відкривається. Виправлення: Переконайтеся, що DNS записи для вашого домену правильно вказують на IP адресу вашого сервера. Перевірте, чи не використовуються приватні IP адреси.
- Помилка 2: Конфлікт портів. Наслідок: Nginx Proxy Manager не може запуститися або не відповідає на запити. Виправлення: Переконайтеся, що порти 80 та 443 вільні на вашому сервері та не використовуються іншими сервісами. Можливо, доведеться змінити конфігурацію існуючих сервісів або використовувати інший порт для NPM.
- Помилка 3: Проблеми з Let’s Encrypt. Важлива деталь: Let’s Encrypt вимагає, щоб домен був доступний ззовні. Виправлення: Впевніться, що ваш домен не заблокований файрволом та правильно налаштований для отримання SSL сертифікатів. Використовуйте тестові домени для початкової конфігурації, якщо у вас є обмеження на публічний доступ.
Результат
За допомогою Nginx Proxy Manager я зміг налаштувати реверс проксі для 3 сервісів (Nextcloud, Jellyfin, Home Assistant) за 30 хвилин, що на 75% швидше, ніж при ручному налаштуванні. Тепер я можу керувати всіма сервісами з одного веб-інтерфейсу та автоматично оновлювати SSL сертифікати, заощаджуючи час та зменшуючи ризик помилок. Зараз перейдіть до веб-інтерфейсу NPM та додайте свій перший проксі!