Websocket 代理背后的Web套接字

Websocket 代理背后的Web套接字,websocket,proxy,apache2,spring-websocket,Websocket,Proxy,Apache2,Spring Websocket,我有一个SpringBoot应用程序,WebSocket在Apache2后面运行。尝试连接时,我遇到以下错误: 服务器日志: Handshake failed due to invalid Upgrade header: null 客户端日志: 以下是Apache 2配置: <IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin tom_marik@hotmail.com ServerName www.langu

我有一个SpringBoot应用程序,WebSocket在Apache2后面运行。尝试连接时,我遇到以下错误:

  • 服务器日志:

    Handshake failed due to invalid Upgrade header: null
    
  • 客户端日志:

以下是Apache 2配置:

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

ServerAdmin tom_marik@hotmail.com
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>

服务器管理员汤姆_marik@hotmail.com
服务器名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/
ProxyPassReverseCokiePath//
ErrorLog/var/log/apache2/languageexchange.log
日志级别警告
重新启动发动机
[结束,QSA,R=永久性]
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
谢谢你的帮助

您需要安装mod_proxy_wstunnel(mod_proxy和mod_ssl)。然后在Apache的配置中:

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
如果这是一台机器,最好设置127.0.0.1而不是languageexchange.eu,因此:

您需要安装mod_proxy_wstunnel(mod_proxy和mod_ssl)。然后在Apache的配置中:

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
如果这是一台机器,最好设置127.0.0.1而不是languageexchange.eu,因此:


您在哪里托管服务器?在AWS上,当您在某些模式下使用ELB时,WebSocket支持存在问题。它只是Ubuntu的VPS。您的服务器托管在哪里?在AWS上,当您在某些模式下使用ELB时,WebSocket支持存在问题。这只是Ubuntu的VPS。