Files
prod/infra/nginx
Andrey 9ec3f02767 feat: integrate Uptime Kuma and Alertmanager into Docker setup
- Add Uptime Kuma service for status monitoring with health checks.
- Introduce Alertmanager service for alert management and notifications.
- Update docker-compose.yml to include new services and their configurations.
- Enhance Makefile with commands for managing Uptime Kuma and Alertmanager logs.
- Modify Ansible playbook to install necessary packages and configure SSL for new services.
- Update Nginx configuration to route traffic to Uptime Kuma and Alertmanager.
- Adjust Prometheus configuration to include alert rules and external URLs.
2025-09-16 21:50:56 +03:00
..

Nginx Reverse Proxy Configuration

Обзор

Данная конфигурация nginx обеспечивает безопасный доступ к сервисам мониторинга через HTTPS с самоподписанными SSL сертификатами.

Архитектура

Интернет → Nginx (443) → 
    ├→ /grafana → Grafana (3000)
    ├→ /prometheus → Prometheus (9090)  
    ├→ /status → Status page (с Basic Auth)
    └→ / → Redirect to /grafana

Структура файлов

infra/nginx/
├── nginx.conf                 # Основная конфигурация nginx
├── ssl/                       # SSL сертификаты (создаются автоматически)
│   ├── cert.pem              # SSL сертификат
│   └── key.pem               # Приватный ключ
├── conf.d/                    # Конфигурации location'ов
│   ├── grafana.conf          # Конфиг для Grafana
│   ├── prometheus.conf       # Конфиг для Prometheus
│   └── status.conf           # Конфиг для status page
└── .htpasswd                 # Basic Auth для status page

Доступ к сервисам

Grafana

  • URL: https://your-server-ip/grafana/
  • Аутентификация: Grafana admin credentials
  • Особенности: Настроен для работы через sub-path

Prometheus

  • URL: https://your-server-ip/prometheus/
  • Особенности: Полный доступ к Prometheus UI

Status Page

  • URL: https://your-server-ip/status
  • Аутентификация: Basic Auth (admin/admin123 по умолчанию)
  • Особенности: Показывает статус nginx (заготовка для Uptime Kuma)

Переменные окружения

Добавьте в ваш .env файл:

# Server Configuration
SERVER_IP=your_server_ip_here

# Status Page Configuration  
STATUS_PAGE_PASSWORD=admin123

Безопасность

  • SSL/TLS: Самоподписанные сертификаты (365 дней)
  • Rate Limiting: 10 req/s для API, 1 req/s для status page
  • Security Headers: X-Frame-Options, X-Content-Type-Options, CSP
  • Basic Auth: Для status page
  • Fail2ban: Интеграция с nginx логами

Мониторинг

  • Health Check: https://your-server-ip/nginx-health
  • Nginx Status: https://your-server-ip/nginx_status (только локальные сети)
  • Logs: /var/log/nginx/access.log, /var/log/nginx/error.log

Развертывание

Конфигурация автоматически развертывается через Ansible playbook:

ansible-playbook -i inventory.ini playbook.yml

Устранение неполадок

Проверка конфигурации nginx

nginx -t

Проверка SSL сертификатов

openssl x509 -in /etc/nginx/ssl/cert.pem -text -noout

Проверка доступности сервисов

curl -k https://your-server-ip/grafana/api/health
curl -k https://your-server-ip/prometheus/-/healthy
curl -k https://your-server-ip/nginx-health

Будущие улучшения

  • Интеграция с Uptime Kuma для status page
  • Let's Encrypt сертификаты вместо самоподписанных
  • Дополнительные security headers
  • Мониторинг nginx метрик в Prometheus