# Beispiel Apache-Konfiguration für tt-tagebuch.de # Diese Datei sollte in /etc/apache2/sites-available/tt-tagebuch.de.conf eingefügt werden # # WICHTIG: Folgende Module müssen aktiviert sein: # sudo a2enmod proxy # sudo a2enmod proxy_http # sudo a2enmod proxy_wstunnel # sudo a2enmod rewrite # sudo a2enmod ssl # sudo a2enmod headers # sudo systemctl restart apache2 ServerName tt-tagebuch.de ServerAlias www.tt-tagebuch.de # Redirect HTTP zu HTTPS Redirect permanent / https://tt-tagebuch.de/ ServerName tt-tagebuch.de ServerAlias www.tt-tagebuch.de # SSL-Konfiguration (anpassen je nach Zertifikat) SSLEngine on SSLCertificateFile /path/to/ssl/cert.pem SSLCertificateKeyFile /path/to/ssl/key.pem # Optional: SSLCertificateChainFile /path/to/ssl/chain.pem # SSL-Einstellungen SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite HIGH:!aNULL:!MD5 SSLHonorCipherOrder on # Logging ErrorLog ${APACHE_LOG_DIR}/tt-tagebuch.de-error.log CustomLog ${APACHE_LOG_DIR}/tt-tagebuch.de-access.log combined # Max Upload Size LimitRequestBody 52428800 # WebSocket-Proxy für Socket.IO # WICHTIG: Diese Location muss VOR der allgemeinen /api Location stehen ProxyPass ws://localhost:3005/socket.io/ ProxyPassReverse ws://localhost:3005/socket.io/ # WebSocket-Upgrade Headers RewriteEngine on RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule ^/?(.*) "ws://localhost:3005/$1" [P,L] # Fallback für HTTP (Polling) ProxyPass http://localhost:3005/socket.io/ ProxyPassReverse http://localhost:3005/socket.io/ # Headers ProxyPreserveHost On RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Real-IP %{REMOTE_ADDR}s # API-Routen ProxyPass http://localhost:3005/api/ ProxyPassReverse http://localhost:3005/api/ ProxyPreserveHost On RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Real-IP %{REMOTE_ADDR}s # Statische Frontend-Dateien DocumentRoot /var/www/tt-tagebuch.de/frontend/dist Options -Indexes +FollowSymLinks AllowOverride All Require all granted # Fallback auf index.html für Vue Router RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] # Cache-Control für statische Assets ExpiresActive On ExpiresDefault "access plus 1 year" Header set Cache-Control "public, immutable" # 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"