# Configuração Apache para saber.jcwebsoftware.cloud
# 
# Instruções:
# 1. Copie este conteúdo para: /etc/apache2/sites-available/saber.conf
# 2. Habilite o site: sudo a2ensite saber.conf
# 3. Habilite os módulos necessários: sudo a2enmod proxy proxy_http rewrite ssl headers
# 4. Teste a configuração: sudo apache2ctl configtest
# 5. Reinicie o Apache: sudo systemctl restart apache2

# ============================================
# VirtualHost HTTP (Porta 80) - Redireciona para HTTPS
# ============================================
<VirtualHost *:80>
    ServerName saber.jcwebsoftware.cloud
    
    # Redirecionar todo tráfego HTTP para HTTPS
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

# ============================================
# VirtualHost HTTPS (Porta 443)
# ============================================
<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerName saber.jcwebsoftware.cloud
        
        # DocumentRoot não é necessário quando usando ProxyPass
        # Mas pode ser útil para logs
        DocumentRoot /var/www/saber
        
        # ============================================
        # Proxy Reverso para Node.js (Porta 3000)
        # ============================================
        ProxyPreserveHost On
        ProxyRequests Off
        
        # ProxyPass para todas as requisições
        ProxyPass / http://localhost:3000/
        ProxyPassReverse / http://localhost:3000/
        
        # Headers necessários para o proxy funcionar corretamente
        <Proxy *>
            Require all granted
        </Proxy>
        
        # ============================================
        # Configurações de Segurança
        # ============================================
        <Directory /var/www/saber>
            AllowOverride All
            Require all granted
        </Directory>
        
        # Headers de segurança
        <IfModule mod_headers.c>
            # Prevenir clickjacking
            Header always set X-Frame-Options "SAMEORIGIN"
            
            # Prevenir MIME type sniffing
            Header always set X-Content-Type-Options "nosniff"
            
            # Proteção XSS
            Header always set X-XSS-Protection "1; mode=block"
            
            # Política de Referrer
            Header always set Referrer-Policy "strict-origin-when-cross-origin"
        </IfModule>
        
        # ============================================
        # Logs
        # ============================================
        ErrorLog ${APACHE_LOG_DIR}/saber_error.log
        CustomLog ${APACHE_LOG_DIR}/saber_access.log combined
        
        # Log de proxy (opcional, útil para debug)
        # LogLevel proxy:info
        
        # ============================================
        # SSL/TLS (Let's Encrypt)
        # ============================================
        SSLCertificateFile /etc/letsencrypt/live/saber.jcwebsoftware.cloud/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/saber.jcwebsoftware.cloud/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
        
        # ============================================
        # Timeouts (ajuste se necessário)
        # ============================================
        Timeout 300
        ProxyTimeout 300
        
    </VirtualHost>
</IfModule>

