I have uWSGI + Apache with following apache config:
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:3031/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://127.0.0.1:3031/$1 [P,L]
ProxyPass / http://127.0.0.1:3031/
Now I want to implement sticky sessions and make apache use proxy balancer for each worker:
<Proxy "balancer://uwsgiworkers">
BalancerMember "http://127.0.0.1:3031" route=1
BalancerMember "http://127.0.0.1:3032" route=2
BalancerMember "http://127.0.0.1:3033" route=3
ProxySet stickysession=ROUTEID
ProxySet lbmethod=byrequests
</Proxy>
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://??????/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://???????/$1 [P,L]
ProxyPass balancer://uwsgiworkers/
And now problem is how to pass to RewriteRule selected worker URL? As I need to change protocol in WebSockets handshake.
Thanks!