- Merged individual Nginx configuration files for Grafana, Prometheus, and Alertmanager into a unified nginx.conf. - Added location blocks for Grafana, Prometheus, and Alertmanager with appropriate proxy settings, authentication, and rate limiting. - Removed obsolete configuration files to streamline the Nginx setup and improve maintainability.
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