Files
trainingstagebuch/apache.conf.example
Torsten Schulz (local) c21544d9b6 Refine Apache configuration for WebSocket handling and improve request processing
This commit updates the Apache configuration to enhance WebSocket support by clarifying the <LocationMatch> directives. It ensures proper handling of WebSocket upgrade requests and introduces a fallback mechanism for HTTP polling. Additionally, it encapsulates header settings for better compatibility and emphasizes the order of LocationMatch blocks. These changes improve the server's capability to manage real-time communication effectively.
2025-11-15 23:40:43 +01:00

72 lines
2.5 KiB
Plaintext

# 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
<VirtualHost *:443>
ServerName tt-tagebuch.de
ServerAlias www.tt-tagebuch.de
DocumentRoot /var/www/tt-tagebuch.de
<Directory /var/www/tt-tagebuch.de>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
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)
<LocationMatch "^/socket\.io/">
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) ws://localhost:3050/$1 [P,L]
# 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
<IfModule mod_headers.c>
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Real-IP %{REMOTE_ADDR}s
RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
</IfModule>
</LocationMatch>
# 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/
</VirtualHost>