Update file 07-proxy-ssl.md
This commit is contained in:
parent
cff73ea427
commit
b48dc0f7a0
@ -1,59 +1,23 @@
|
||||
# 07. Проксирование и SSL (Nginx Proxy Manager)
|
||||
|
||||
Nginx Proxy Manager (NPM) работает на хосте `gateway` (192.168.1.201) в Docker-контейнере. Он является единой точкой входа для всех внешних HTTPS-запросов к доменам `*.zailon.ru`.
|
||||
## Обзор
|
||||
|
||||
## Конфигурация NPM
|
||||
**Nginx Proxy Manager (NPM)** запущен в Docker-контейнере на хосте `gateway` (192.168.1.201). Он принимает входящие HTTP/HTTPS-запросы на порты 80 и 443 и проксирует их к внутренним сервисам. SSL-сертификаты автоматически выпускаются и обновляются через Let's Encrypt.
|
||||
|
||||
- **Версия**: jc21/nginx-proxy-manager:latest (образ)
|
||||
- **Порты**: 80 (HTTP), 443 (HTTPS), 81 (админка)
|
||||
- **Хранилище данных**: `/opt/npm/data`, `/opt/npm/letsencrypt`
|
||||
## Заголовки безопасности
|
||||
|
||||
## Доступ к админке NPM
|
||||
Для защиты веб-сервисов рекомендуется добавлять следующие HTTP-заголовки для каждого проксируемого домена (настройка в интерфейсе NPM → Advanced):
|
||||
|
||||
Административный интерфейс доступен по адресу `https://192.168.1.201:81` (только локально). Учётные данные хранятся в зашифрованном виде во встроенной базе данных SQLite.
|
||||
|
||||
## Проксируемые домены
|
||||
|
||||
| Домен | Назначение | Бэкенд | SSL (Let's Encrypt) |
|
||||
|-----------------------|-----------------------|--------------------------|---------------------|
|
||||
| ab.zailon.ru | Audiobookshelf | http://192.168.1.203:45132 | ✅ |
|
||||
| book.zailon.ru | BookStack | http://192.168.1.202:45133 | ✅ |
|
||||
| bw.zailon.ru | Bitwarden | http://192.168.1.202:45131 | ✅ |
|
||||
| chat.zailon.ru | Snikket (XMPP) | https://192.168.1.206:8443 | ✅ |
|
||||
| cloud.zailon.ru | Nextcloud | http://192.168.1.213:45131 | ✅ |
|
||||
| cook.zailon.ru | Mealie | http://192.168.1.202:45132 | ✅ |
|
||||
| git.zailon.ru | GitLab | http://192.168.1.209:45130 | ✅ |
|
||||
| jellyfin.zailon.ru | Jellyfin | http://192.168.1.203:45131 | ✅ |
|
||||
| mnemozailon.ru | BookStack (альт) | http://192.168.1.202:45133 | ✅ |
|
||||
| mon.zailon.ru | Grafana | http://192.168.1.208:45132 | ✅ |
|
||||
| music.zailon.ru | Ampache | http://192.168.1.203:45132 | ✅ |
|
||||
| nc.zailon.ru | Nextcloud (ВМ) | https://192.168.1.205:443 | ✅ |
|
||||
| olimp.zailon.ru | Heimdall | http://192.168.1.201:45131 | ✅ |
|
||||
| oracul.zailon.ru | MeshCentral | http://192.168.1.208:45131 | ✅ |
|
||||
| photo.zailon.ru | Immich | http://192.168.1.204:45131 | ✅ |
|
||||
| qb.zailon.ru | qBittorrent | http://192.168.1.211:8080 | ✅ (Offline) |
|
||||
|
||||
|
||||
## SSL-сертификаты
|
||||
|
||||
Все сертификаты выдаются Let's Encrypt через NPM автоматически. Для каждого домена настроен:
|
||||
|
||||
- **Провайдер**: Let's Encrypt
|
||||
- **Срок действия**: 90 дней, автоматическое продление
|
||||
- **Тип**: Single domain (все домены отдельные)
|
||||
|
||||
## Настройки безопасности
|
||||
|
||||
### Рекомендуемые заголовки для каждого прокси
|
||||
|
||||
В интерфейсе NPM для каждого прокси на вкладке "Advanced" следует добавить:
|
||||
```
|
||||
```nginx
|
||||
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
|
||||
add_header X-Content-Type-Options nosniff always;
|
||||
add_header X-Frame-Options SAMEORIGIN always;
|
||||
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
|
||||
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
|
||||
add_header Permissions-Policy "geolocation=(), camera=(), microphone=(), payment=()" always;
|
||||
```
|
||||
|
||||
### Назначение заголовков
|
||||
|
||||
| Заголовок | Назначение |
|
||||
|-----------|------------|
|
||||
| **Strict-Transport-Security (HSTS)** | Заставляет браузер всегда использовать HTTPS, предотвращая атаки понижения протокола. |
|
||||
@ -62,6 +26,53 @@ add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
|
||||
| **Referrer-Policy** | Контролирует, какая информация о referer передаётся при переходе на другие сайты. |
|
||||
| **Permissions-Policy** | Отключает ненужные API (геолокация, камера, микрофон) для всех страниц. |
|
||||
|
||||
## Глобальная конфигурация NPM
|
||||
|
||||
Глобальные настройки находятся в `/etc/nginx/nginx.conf` внутри контейнера. Основные параметры:
|
||||
|
||||
```nginx
|
||||
client_max_body_size 2000m; # максимальный размер загружаемого файла (2 ГБ)
|
||||
proxy_read_timeout 90s; # таймаут чтения прокси
|
||||
set_real_ip_from 10.0.0.0/8; # доверенные подсети для определения реального IP
|
||||
set_real_ip_from 172.16.0.0/12;
|
||||
set_real_ip_from 192.168.0.0/16;
|
||||
real_ip_header X-Real-IP;
|
||||
real_ip_recursive on;
|
||||
```
|
||||
|
||||
- **client_max_body_size 2000m** – позволяет загружать большие файлы (например, видео в Jellyfin).
|
||||
- **proxy_read_timeout 90s** – защищает от зависания долгих запросов.
|
||||
- **set_real_ip_from** – определяет реальный IP клиента, что важно для корректной работы логирования и ограничений.
|
||||
|
||||
## Доступ к админке NPM
|
||||
|
||||
Административный интерфейс доступен по адресу `https://192.168.1.201:81` (только локально). Учётные данные хранятся в зашифрованном виде во встроенной базе данных SQLite.
|
||||
|
||||
## Проксируемые домены
|
||||
|
||||
Список всех активных прокси (актуально на 20 марта 2026):
|
||||
|
||||
| Домен | Бэкенд | SSL | Статус |
|
||||
|-------|--------|-----|--------|
|
||||
| ab.zailon.ru | http://192.168.1.203:45132 | Let's Encrypt | Online |
|
||||
| book.zailon.ru | http://192.168.1.202:45133 | Let's Encrypt | Online |
|
||||
| bw.zailon.ru | http://192.168.1.202:45131 | Let's Encrypt | Online |
|
||||
| chat.zailon.ru | https://192.168.1.206:8443 | Let's Encrypt | Online |
|
||||
| cloud.zailon.ru | http://192.168.1.213:45131 | Let's Encrypt | Online |
|
||||
| cook.zailon.ru | http://192.168.1.202:45132 | Let's Encrypt | Online |
|
||||
| git.zailon.ru | http://192.168.1.209:45130 | Let's Encrypt | Online |
|
||||
| jellyfin.zailon.ru | http://192.168.1.203:45131 | Let's Encrypt | Online |
|
||||
| mnemozailon.ru | http://192.168.1.202:45133 | Let's Encrypt | Online |
|
||||
| mon.zailon.ru | http://192.168.1.208:45132 | Let's Encrypt | Online |
|
||||
| music.zailon.ru | http://192.168.1.203:45132 | Let's Encrypt | Online |
|
||||
| nc.zailon.ru | https://192.168.1.205:443 | Let's Encrypt | Online |
|
||||
| olimp.zailon.ru | http://192.168.1.201:45131 | Let's Encrypt | Online |
|
||||
| oracul.zailon.ru | http://192.168.1.208:45131 | Let's Encrypt | Online |
|
||||
| photo.zailon.ru | http://192.168.1.204:45131 | Let's Encrypt | Online |
|
||||
| qb.zailon.ru | http://192.168.1.211:8080 | Let's Encrypt | **Offline** |
|
||||
|
||||
> **Проблема:** `qb.zailon.ru` отображается как Offline. Необходимо проверить доступность qBittorrent на порту 8080 и корректность прокси-правила.
|
||||
|
||||
## Мониторинг NPM
|
||||
|
||||
- Логи NPM собираются **Promtail** (на gateway) и отправляются в **Loki**.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user