# 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` файл: ```bash # 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: ```bash ansible-playbook -i inventory.ini playbook.yml ``` ## Устранение неполадок ### Проверка конфигурации nginx ```bash nginx -t ``` ### Проверка SSL сертификатов ```bash openssl x509 -in /etc/nginx/ssl/cert.pem -text -noout ``` ### Проверка доступности сервисов ```bash 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