Всем привет — на днях задумал я поднять сервер автоматизации рабочих процессов на базе n8n, но вот незадача — для его корректной работы нужен http порт, то есть 80й порт на который должен быть доступ из Internet’а. А он у меня уже занят Web сервером.
То есть встала задача принимать запросы от порта 80 и пересылать эти запросы на другие сервера. Как это сделать ? В этом нам поможет Реверс-прокси (или обратный прокси) который можно сделать на NGINX.
Схематично работу Reverse Proxy можно представить вот так:
И если у вас Proxmox не ниже версии 8.x то NGINX ставится невероятно просто.
У меня же Proxmox версии 7.3 и мне перед установкой NGINX пришлось обновить Proxmox до последней версии. Как это сделать о описал здесь.
И так Proxmox обновлён — погнали.
И первое что мы делаем — идём на https://tteck.github.io/Proxmox/#proxmox-ve-tools
Это полезный ресурс где находятся различные скрипты автоматизации Proxmox-VE. Вводим в поиске nginx и видим секцию с Nginx Proxy Manager LXC. Прямая ссылка вот
Здесь мы копируем команду:
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/nginxproxymanager.sh)"
Заходим в Web интерфейс Proxmox — идём в Shell и вставляем туда скопированную команду.
Будет автоматически установлен контейнер с характеристиками CPU=1, RAM=1Gb, DiskSize=4Gb, то есть как видим ему для работы нужно совсем мало ресурсов. Далее всё оставляем по умолчанию.
После этого пойдёт установка
Здесь нас спрашивают — хотим ли мы установить старую версию Y или новую N — отвечаем N (хотим новую версию)
Далее установка пойдёт дальше, после чего нам выведется URL для входа.
Установка завершена. Копируем URL для входа в Nginx Proxy Manager
Имя пользователя [email protected]
пароль changeme
Далее перенаправляем порты 80 и 443 с маршрутизатора на IP-адрес Nginx Proxy Manager LXC.
Конфигурирование здесь очень простое, заходите в Hosts -> Proxy Hosts. Нажимаете Add Proxy Host
В поле Domain Names пишите название вашего сайта или нескольких сайтов, без http и www, т.е. site.ru
Выбираете протокол http или https — сооттвестственно 80 и 443 порты
В Forward Hostname/IP — пишите IP адрес или хост сервера, куда нужно перенаправлять запрос.
Далее мы идём во вкладку SSL, выбираем Request a new SSL Certificate “with Let’s Encrypt”, активируем ползунок “I Agree to the Let’s Encrypt Terms of Service” и нажимаем Save.
И если у вас проброшены 80 и 443 порты на роутере, то будут получены новые сертификаты.
На этом установка и настройка закончены
P.S. Какие вопросы пока ещё не удалось решить ? aaPanel после этого перестал получать сертификаты — то есть во время их получения выходит ошибка. Скорее всего это связано с тем, что сертификаты получает NGINX. Как сделать чтобы он их передал Web серверу ? Если же подсунуть сертификаты вручную, то всё работает — но постоянно прописывать их вручную тоже не хорошо, хоть это и раз в несколько месяцев. Возможно это как то решается через cloudflare