# Apache-Konfiguration für tt-tagebuch.de mit WebSocket-Support # # WICHTIG: Folgende Module müssen aktiviert sein: # sudo a2enmod proxy # sudo a2enmod proxy_http # sudo a2enmod proxy_wstunnel # sudo a2enmod rewrite # sudo a2enmod headers # sudo systemctl restart apache2 ServerName tt-tagebuch.de ServerAlias www.tt-tagebuch.de DocumentRoot /var/www/tt-tagebuch.de Options Indexes FollowSymLinks AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/tt-tagebuch.de_error.log CustomLog ${APACHE_LOG_DIR}/tt-tagebuch.de_access.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/tt-tagebuch.de/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/tt-tagebuch.de/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf ProxyRequests Off # WebSocket-Proxy für Socket.IO # WICHTIG: Diese LocationMatch muss VOR den anderen ProxyPass-Direktiven stehen # WICHTIG: mod_proxy_wstunnel muss aktiviert sein (sudo a2enmod proxy_wstunnel) # WICHTIG: mod_rewrite muss aktiviert sein (sudo a2enmod rewrite) # WebSocket-Upgrade erkennen und weiterleiten (wss:// -> ws://) # Die RewriteRule wird nur ausgeführt, wenn Upgrade-Header vorhanden ist # Andernfalls wird ProxyPass verwendet (für HTTP-Polling) RewriteEngine on RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteCond %{HTTP:Connection} =upgrade [NC] RewriteRule ^/socket\.io/?(.*) ws://localhost:3050/socket.io/$1 [P,L,QSA] # Fallback für HTTP-Polling (wird verwendet, wenn RewriteRule nicht greift) ProxyPass http://localhost:3050/socket.io/ ProxyPassReverse http://localhost:3050/socket.io/ ProxyPreserveHost On ProxyAddHeaders On RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Real-IP %{REMOTE_ADDR}s RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s # Timeout für alle Proxy-Verbindungen (außerhalb von LocationMatch) ProxyTimeout 3600 # API-Routen ProxyPass /api http://localhost:3050/api ProxyPassReverse /api http://localhost:3050/api # Alle anderen Anfragen an den Backend-Server (für Frontend) ProxyPass / http://localhost:3050/ ProxyPassReverse / http://localhost:3050/