ServerAdmin webmaster@your-part.de ServerName your-part.de ServerAlias www.your-part.de DocumentRoot /opt/yourpart/frontend/dist DirectoryIndex index.html # Frontend statische Dateien AllowOverride None Options -Indexes +FollowSymLinks Require all granted # Fallback für Vue Router FallbackResource /index.html # www Redirect (muss zuerst kommen) RewriteEngine on RewriteCond %{SERVER_NAME} =your-part.de RewriteRule ^ https://www.%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] # Proxy-Einstellungen ProxyPreserveHost On ProxyRequests Off RequestHeader set X-Forwarded-Proto "https" AllowEncodedSlashes NoDecode # API-Requests an Backend weiterleiten ProxyPass "/api/" "http://localhost:2020/api/" ProxyPassReverse "/api/" "http://localhost:2020/api/" # Socket.io: WebSocket und HTTP-Polling mit Location-Blöcken # WebSocket-Upgrade RewriteEngine on RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule .* "ws://localhost:2020%{REQUEST_URI}" [P,L] # HTTP-Fallback für Polling ProxyPass "http://localhost:2020/socket.io/" ProxyPassReverse "http://localhost:2020/socket.io/" # Daemon: WebSocket mit Location-Block # WebSocket-Upgrade RewriteEngine on RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteCond %{HTTP:Connection} upgrade [NC] RewriteRule .* "ws://localhost:4551%{REQUEST_URI}" [P,L] # HTTP-Fallback (sollte eigentlich nicht benötigt werden) ProxyPass "http://localhost:4551/" ProxyPassReverse "http://localhost:4551/" ErrorLog /var/log/apache2/yourpart.error.log CustomLog /var/log/apache2/yourpart.access.log combined HostnameLookups Off UseCanonicalName Off ServerSignature On # SSL-Konfiguration Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/www.your-part.de/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.your-part.de/privkey.pem