- Enhanced .dockerignore to exclude bot logs, Docker volumes, and temporary files. - Updated .gitignore to include Ansible vars files for better environment management. - Modified docker-compose.yml health checks to use curl for service verification. - Refined Ansible playbook by adding tasks for creating default Zsh configuration files and cleaning up temporary files. - Improved Nginx configuration to support Uptime Kuma with specific location blocks for status and dashboard, including rate limiting and WebSocket support.
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