# Oliver Metadata Tool v4.0 - Apache Configuration # Location: /etc/apache2/sites-available/solventum-image-metadata.conf # # Enable with: # sudo a2ensite solventum-image-metadata # sudo a2enmod proxy proxy_http headers rewrite ssl # sudo systemctl reload apache2 ServerName ai-sandbox.oliver.solutions # Redirect HTTP to HTTPS Redirect permanent / https://ai-sandbox.oliver.solutions/ ServerName ai-sandbox.oliver.solutions # SSL Configuration SSLEngine on SSLCertificateFile /etc/letsencrypt/live/ai-sandbox.oliver.solutions/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/ai-sandbox.oliver.solutions/privkey.pem # Security headers Header always set X-Frame-Options "SAMEORIGIN" Header always set X-Content-Type-Options "nosniff" Header always set X-XSS-Protection "1; mode=block" Header always set Referrer-Policy "strict-origin-when-cross-origin" # ========================================================================= # Frontend - React SPA (Static Files) # ========================================================================= # Serve static files from /var/www/html/solventum-image-metadata DocumentRoot /var/www/html/solventum-image-metadata Options -Indexes +FollowSymLinks AllowOverride All Require all granted # Enable React Router (SPA routing) RewriteEngine On RewriteBase /solventum-image-metadata # Don't rewrite files or directories that exist RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Don't rewrite API calls RewriteCond %{REQUEST_URI} !^/solventum-image-metadata/api/ # Rewrite everything else to index.html RewriteRule ^ /solventum-image-metadata/index.html [L] # Cache static assets Header set Cache-Control "public, max-age=31536000" # Don't cache HTML Header set Cache-Control "no-cache, no-store, must-revalidate" Header set Pragma "no-cache" Header set Expires "0" # ========================================================================= # Backend API - FastAPI (Reverse Proxy) # ========================================================================= # Proxy API requests to FastAPI backend ProxyPreserveHost On ProxyTimeout 600 # API endpoints ProxyPass http://localhost:8000 ProxyPassReverse http://localhost:8000 # Headers for backend RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s" RequestHeader set X-Real-IP "%{REMOTE_ADDR}s" # Allow large file uploads (500MB) LimitRequestBody 524288000 # ========================================================================= # Logs # ========================================================================= ErrorLog ${APACHE_LOG_DIR}/solventum-image-metadata-error.log CustomLog ${APACHE_LOG_DIR}/solventum-image-metadata-access.log combined # Log level (debug for troubleshooting, warn for production) LogLevel warn # vim: syntax=apache ts=4 sw=4 sts=4 sr noet