apache - Apache 使用 websocket 进行负载平衡
问题描述
我们希望在 KVM 上侦听不同端口的两个进程之间对请求进行负载平衡。
当我将 URL 直接放在 RewriteRule 中而不进行负载平衡时,一切似乎都正常。所以我认为我的配置有问题。
我的配置是:
<IfModule mod_ssl.c>
<virtualHost :443>
ServerName super.secret.domain
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://httprewrite>
BalancerMember http://192.168.122.83:81/$1 route=1
BalancerMember http://192.168.122.83:80/$1 route=2
ProxySet stickysession=ROUTEID
</Proxy>
<Proxy balancer://wsrewrite>
BalancerMember ws://192.168.122.83:81/$1 route=1
BalancerMember ws://192.168.122.83:80/$1 route=2
ProxySet stickysession=ROUTEID
</Proxy>
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.) balancer://wsrewrite/ [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) balancer://httprewrite/ [P,L]
SSLCertificateFile /etc/letsencrypt/live/super.secret.domain/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/super.secret.domain/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/super.secret.domain/chain.pem
</virtualHost>
</IfModule>
有些部分正在加载其他部分没有。例如https://super.secret.domain/favicon.ico给出 404 错误。
解决方案
推荐阅读
- scala - sys.env.getOrElse 抛出异常
- javascript - 让 xstate 机器接收事件并更新上下文(但不更改状态),无论它处于哪个状态
- typescript - 为什么我需要在 Typescript 中进行类型转换?
- c# - 使用 try catch 执行 while 循环,请求返回值
- swift - 复制对象并将其放置在视图上
- azure-cosmosdb - 如何从 cosmos db 集合中获取列信息
- javascript - Redux 状态无法从调度程序更新
- java - JAVA_HOME 未指向 JDK
- python - 如何使用 python 3.8 将多个值作为 JSON 返回?
- sql - 如何在 WHERE 子句的 LIKE 运算符中使用撇号?示例 - WHERE WORD like '%That's why%'