add post nginx-proxy-manager

This commit is contained in:
Artur Akmalov
2023-05-28 18:41:48 +05:00
parent af5c47fa2a
commit cc145e98ac
12 changed files with 185 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

+185
View File
@@ -0,0 +1,185 @@
---
slug: nginx-proxy-manager
title: NGINX Proxy Manager
description: NGINX Proxy Manager - сервис (WEB GUI) для управления конфигурацией NGINX
image: ./nginx-proxy-manager-logo.png
tags: [docker, homelab, nginx, proxy]
date: 2022-01-08
---
NGINX Proxy Manager - сервис (WEB GUI) для управления конфигурацией NGINX. Идет как готовый docker контейнер, в проекте реализовано максимально простое и удобное управление основным базовым функционалом NGINX.
[![nginx logo](./nginx-proxy-manager-logo.png)](/blog/nginx-proxy-manager)
<!--truncate-->
## NGINX Proxy Manager
Open Source проект ссылки на [Github](https://github.com/NginxProxyManager/nginx-proxy-manager) и [Офф сайт](https://nginxproxymanager.com/)
Возможности:
- Простой и удобный web интерфейс
- Легкая настройка проксирования без редактирования nginx config файла
- Управление пользователями, разрешения и журнал аудита
- Возможность установить свои или сгенерировать SSL сертификаты
- Контроль доступа, средства авторизации, разрешенные и запрещенные адрес листы.
Основное назначение это проксирование по URL домена.
Например имеются 3 домена:
- akmalov.com
- test.akmalov.com
- lvl.akmalov.com
Все домены обращаются по одному внешнему IP на маршрутизатор
Маршрутизатор перенаправляет все соединения которые идут на 80 или 443 порт на NGINX Proxy Manager
NGINX в зависимости от домена перенаправляет на необходимый сервер, VM, Container в локальной сети. Подставляет сертификат, управляет разрешениями.
![nginx exmaple shema](nginx-exmaple-shema.png "Схема использования NGINX Poroxy Manager")
### Установка NGINX Proxy Manager
#### 1. Подготовка среды
Буду устанавливать на LXC Proxmox
- OS: Ubuntu 22.02
- CPU: 2
- RAM: 1 Gb
- Disk: 10 Gb
Обновление пакетов и установка docker
```
apt update && apt upgrade -y
apt install -y docker.io docker-compose
```
#### 2. Настройка docker-compose.yaml
```YAML
version: "3"
services:
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # HTTP port
- '443:443' # HTTPS port
- '81:81' # Admin web port
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
```
По умолчанию создается файловая база данных SQLite - `data/database.sqlite`
Есть так же решения c использованием отдельной базы данных MySQL на офф.сайте.
В моем случаи SQLite хватает с огромным запасом
Запуск контейнера
```
docker-compose up -d
```
После запуска контейнера, можно подключиться к панели администратора
<http://YOUR-IP:81/>
Логин и пароль по умолчанию
```
Email: admin@example.com
Password: changeme
```
При первом запуске предложит настроить админскую учетную запись и изменить пароль
### Настройка NGINX Proxy Manager
Так выглядит изначально GUI главного экрана (Все по нулям т.к. ничего не добавляли еще)
![nginx proxy manager web](web-main.png "gui nginx proxy manager web")
SSL сертификаты есть возможность сгенерировать с помощью Let'Encrypt в одно нажатие или добавить свои сертификаты
![nginx proxy manager ssl](ssl-generate.png "Панель добавления или создания сертификата SSL")
### Настройка Host Proxy NGINX
Все также интуитивно понтяно, прописываю домен, порт, если нужно подставляю сертификат SSL для HTTPS
![nginx proxy manager proxy host1](add-host1.png "Добавление proxy host")
![nginx proxy manager proxy host3](add-host3.png "Добавление proxy host")
Для работы доменов из локальной сети необходимо в DNS домены которые добавлены в Proxy Host направлять на адрес NGINX Proxy Manager
В общем и целом этого хватает для решения задач которые описал выше. Хоть и конфиг был бы не такой сложной, но с помощью этого сервиса можно это сделать в несколько кликов.
## Дополнительные функции
Распишу еще кое какие полезные фичи, которые использую у себя
### Dashboard для nginx proxy manager
Проект отнсительно свежий и активно разрабаывается, выглядит интересно
[Ссылка на Git автора](https://github.com/xavier-hernandez/goaccess-for-nginxproxymanager)
![nginx proxy manager dashboard](monitoring.png "nginx proxy manager мониторинг")
Красивый графический вывод информации на основе логов, позволяет посмотреть статистику, оценить нагрузку. Написано на Go работает быстро, даже с большим объемом данных, не потребляет много ресурсов.
В docker-compose необходимо указать путь к логам от nginx proxy manager
### Страница 404 для nginx proxy manager
Nginx позволяет вместо ошибки 404 сделать redirect на любой другой хост или даже указать свой HTML код
![nginx proxy manager custom 404](404-host.png "nginx proxy manager 404")
Воспользуюсь Redirect и сделаю красивую страницу для 404
[Ссылка на Docker Hub проекта](https://hub.docker.com/r/kale5/rickroll)
![nginx proxy manager custom 404](rick.jpeg "nginx proxy manager 404 rickroll")
Теперь вместо страницы ошибок он будет перенаправлять на этот URL, с качественным видео
### Итоговый docker-compose
В итоге конечный docker-compose у меня выглядит так:
```YAML
version: "3"
services:
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # HTTP Port
- '443:443' # HTTPS Port
- '81:81' # Admin Web Port
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
npm-monitoring:
image: xavierh/goaccess-for-nginxproxymanager:latest
restart: always
environment:
- TZ=Asia/Yekaterinburg
- SKIP_ARCHIVED_LOGS=True #optional
- EXCLUDE_IPS=127.0.0.1 #optional
- LOG_TYPE=NPM
ports:
- '82:7880'
volumes:
- ./data/logs:/opt/log
error-page-404:
image: 'kale5/rickroll:latest'
restart: unless-stopped
ports:
- '83:80'
```
## Итоги
Мне очень нравится этот сервис позволяет быстро легко поднять и настроить NGINX, каких-то проблем с ним не было, сам продлевает сертификаты, одним словом настроил и забыл и иногда только заходил и через web добавлял новые хосты в 2-3 клика.
Так же есть аналог - Traefik, на данный момент активно его изучаю, но там нет удобного интерфейса и вся настройка через конфиги, т.к. больше погружаюсь в автоматизацию и много сервисов которые надо динамически настраивать, больше упор именно на traefik идет.
Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB