问题
我正在尝试在apache服务器后面设置一个带有laravel websockets库的实时环境。
Websocket服务器在端口6001
上运行(从外部无法访问)。
Apache VHost已配置为ws.example.com
我无法使Apache正确代理wss://
请求。
对wss://ws.example.com/request/path?protocol=7&client=js&version=5.1.1&flash=false
的请求失败了。
(Error during WebSocket handshake: Invalid status line
)
我认为我的Vhost配置存在问题。 我是否漏掉了什么? 任何建议都将不胜感激。
vhost配置<VirtualHost *:443>
ServerName ws.example.com
ServerAlias www.ws.example.com.com
DocumentRoot /srv/vhost/example.com/domains/ws.example.com/public_html
ErrorLog /var/log/virtualmin/ws.example.com_error_log
CustomLog /var/log/virtualmin/ws.example.com_access_log combined
ScriptAlias /cgi-bin/ /srv/vhost/example.com/domains/ws.example.com/cgi-bin/
DirectoryIndex index.php index.html
RewriteEngine on
ProxyRequests off
ProxyVia on
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://localhost:6001/$1 [P,L]
ProxyPass /request/path http://localhost:6001/request/path
ProxyPassReverse /request/path http://localhost:6001/request/path
SSLCertificateFile /etc/letsencrypt/path/ws.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/path/ws.example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>