Tomas Marik
Tomas Marik

Reputation: 4093

Web Socket behind proxy

I have Spring Boot app with WebSocket running behind Apache 2. When trying connect I am getting the following error:

Here is the Apache 2 config:

<IfModule mod_ssl.c>
<VirtualHost *:443>

ServerAdmin [email protected]
ServerName www.languageexchange.eu

ProxyPass "/ws2/"  "ws://www.languageexchange.eu:92/"
ProxyPass "/wss2/" "wss://www.languageexchange.eu:92/"

ProxyPass           /   http://31.31.74.54:92/
ProxyPassReverse    /   http://31.31.74.54:92/
ProxyPassReverseCookiePath  /    /
ErrorLog /var/log/apache2/languageexchange.log
LogLevel warn

RewriteEngine on
[END,QSA,R=permanent]
SSLCertificateFile /etc/letsencrypt/live/languageexchange.eu/cert.pem
SSLCertificateKeyFile 
/etc/letsencrypt/live/languageexchange.eu/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile 
/etc/letsencrypt/live/languageexchange.eu/chain.pem

</VirtualHost>
</IfModule>

Thanks for any help!

Upvotes: 1

Views: 808

Answers (1)

Mateusz Kleinert
Mateusz Kleinert

Reputation: 1376

You need to have mod_proxy_wstunnel installed (mod_proxy and mod_ssl as well). Then in your Apache's configuration:

ProxyPass /ws2  ws://languageexchange.eu:92 keepalive=On
ProxyPassReverse /ws2  ws://languageexchange.eu:92
ProxyPass /wss2 wss://languageexchange.eu:92 keepalive=On
ProxyPassReverse /wss2  wss://languageexchange.eu:92

If this is a single machine it may be better to set 127.0.0.1 instead of languageexchange.eu, so:

ProxyPass /ws2  ws://127.0.0.1:92 keepalive=On
ProxyPassReverse /ws2  ws://127.0.0.1:92
ProxyPass /wss2 wss://127.0.0.1:92 keepalive=On
ProxyPassReverse /wss2  wss://127.0.0.1:92

Upvotes: 2

Related Questions