# 🔄 Гайд по настройке LCG за Reverse Proxy ## 📋 Переменные окружения для Reverse Proxy ### 🔧 **Основные настройки:** ```bash # Включить аутентификацию LCG_SERVER_REQUIRE_AUTH=true # Настроить домен для cookies (опционально) LCG_DOMAIN=.yourdomain.com # Настроить путь для cookies (для префикса пути) LCG_COOKIE_PATH=/lcg # Управление Secure флагом cookies LCG_COOKIE_SECURE=false # Разрешить HTTP (для работы за reverse proxy) LCG_SERVER_ALLOW_HTTP=true # Настроить хост и порт LCG_SERVER_HOST=0.0.0.0 LCG_SERVER_PORT=8080 # Пароль для входа (по умолчанию: admin#123456) LCG_SERVER_PASSWORD=your_secure_password ``` ## 🚀 **Запуск за Reverse Proxy** ### **1. Nginx конфигурация:** ```nginx server { listen 443 ssl; server_name yourdomain.com; # SSL настройки ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Важно для работы cookies proxy_cookie_domain localhost yourdomain.com; } } ``` ### **2. Apache конфигурация:** ```apache ServerName yourdomain.com SSLEngine on SSLCertificateFile /path/to/cert.pem SSLCertificateKeyFile /path/to/key.pem ProxyPreserveHost On ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ # Настройки для cookies ProxyPassReverseCookieDomain localhost yourdomain.com ``` ### **3. Caddy конфигурация:** ```caddy yourdomain.com { reverse_proxy localhost:8080 { header_up Host {host} header_up X-Real-IP {remote} header_up X-Forwarded-For {remote} header_up X-Forwarded-Proto {scheme} } } ``` ## 🏃‍♂️ **Команды запуска** ### **Базовый запуск:** ```bash LCG_SERVER_REQUIRE_AUTH=true LCG_SERVER_ALLOW_HTTP=true ./lcg serve -H 0.0.0.0 -p 8080 ``` ### **С настройкой домена:** ```bash LCG_SERVER_REQUIRE_AUTH=true \ LCG_SERVER_ALLOW_HTTP=true \ LCG_DOMAIN=.yourdomain.com \ LCG_COOKIE_SECURE=false \ ./lcg serve -H 0.0.0.0 -p 8080 ``` ### **С кастомным паролем:** ```bash LCG_SERVER_REQUIRE_AUTH=true \ LCG_SERVER_ALLOW_HTTP=true \ LCG_SERVER_PASSWORD=my_secure_password \ LCG_DOMAIN=.yourdomain.com \ ./lcg serve -H 0.0.0.0 -p 8080 ``` ## 🔒 **Безопасность** ### **Рекомендуемые настройки:** - ✅ `LCG_SERVER_REQUIRE_AUTH=true` - всегда включайте аутентификацию - ✅ `LCG_COOKIE_SECURE=false` - для HTTP за reverse proxy - ✅ `LCG_DOMAIN=.yourdomain.com` - для правильной работы cookies - ✅ Сильный пароль в `LCG_SERVER_PASSWORD` ### **Настройки Reverse Proxy:** - ✅ Передавайте заголовки `X-Forwarded-*` - ✅ Настройте `proxy_cookie_domain` в Nginx - ✅ Используйте HTTPS на уровне reverse proxy ## 🐳 **Docker Compose пример** ```yaml version: '3.8' services: lcg: image: your-lcg-image environment: - LCG_SERVER_REQUIRE_AUTH=true - LCG_SERVER_ALLOW_HTTP=true - LCG_DOMAIN=.yourdomain.com - LCG_COOKIE_SECURE=false - LCG_SERVER_PASSWORD=secure_password ports: - "8080:8080" restart: unless-stopped nginx: image: nginx:alpine volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./ssl:/etc/nginx/ssl ports: - "443:443" depends_on: - lcg ``` ## 🔍 **Диагностика проблем** ### **Проверка cookies:** ```bash # Проверить установку cookies curl -I https://yourdomain.com/login # Проверить домен cookies curl -v https://yourdomain.com/login 2>&1 | grep -i cookie ``` ### **Логи приложения:** ```bash # Запуск с debug режимом LCG_SERVER_REQUIRE_AUTH=true \ LCG_SERVER_ALLOW_HTTP=true \ ./lcg -d serve -H 0.0.0.0 -p 8080 ``` ## 📝 **Примечания** - **SameSite=Lax** - более мягкий режим для reverse proxy - **Domain cookies** - работают только с указанным доменом - **Secure=false** - обязательно для HTTP за reverse proxy - **X-Forwarded-* заголовки** - важны для правильной работы ## 🆘 **Частые проблемы** 1. **Cookies не работают** → Проверьте `LCG_DOMAIN` и настройки reverse proxy 2. **Ошибка 403 CSRF** → Проверьте передачу cookies через reverse proxy 3. **Не работает аутентификация** → Убедитесь что `LCG_SERVER_REQUIRE_AUTH=true` 4. **Проблемы с HTTPS** → Настройте `LCG_COOKIE_SECURE=false` для HTTP за reverse proxy ## 🛣️ **Конфигурация с префиксом пути** ### **Пример: example.com/lcg** #### **Переменные окружения для префикса:** ```bash LCG_SERVER_REQUIRE_AUTH=true \ LCG_SERVER_ALLOW_HTTP=true \ LCG_DOMAIN=.example.com \ LCG_COOKIE_PATH=/lcg \ LCG_COOKIE_SECURE=false \ ./lcg serve -H 0.0.0.0 -p 8080 ``` #### **Nginx с префиксом:** ```nginx server { listen 443 ssl; server_name example.com; location /lcg/ { proxy_pass http://localhost:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Важно для работы cookies с префиксом proxy_cookie_domain localhost example.com; proxy_cookie_path / /lcg/; } } ``` #### **Apache с префиксом:** ```apache ServerName example.com SSLEngine on ProxyPreserveHost On ProxyPass /lcg/ http://localhost:8080/ ProxyPassReverse /lcg/ http://localhost:8080/ # Настройки для cookies с префиксом ProxyPassReverseCookieDomain localhost example.com ProxyPassReverseCookiePath / /lcg/ ``` #### **Caddy с префиксом:** ```caddy example.com { reverse_proxy /lcg/* localhost:8080 { header_up Host {host} header_up X-Real-IP {remote} header_up X-Forwarded-For {remote} header_up X-Forwarded-Proto {scheme} } } ```