如果在相同的URL上创建Apache2代理WebSocket连接(例如,BrowserSync),而仅将标头“ Upgrade:websocket”和URL模式ws://区别开来,该如何配置呢?
例如:
HTTP request:
GET http://example.com/browser-sync/socket.io/?... HTTP/1.1
...
WebSocket request:
GET ws://example.com/browser-sync/socket.io/?... HTTP/1.1
Connection: upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
...
我发现的所有示例仅重定向某些路径,例如“ <Location / ws> ...”或“ ProxyPass / ws / ws://example.com/”
我当前的配置:
ProxyRequests off
<Location />
ProxyPass http://127.0.0.1:3000/
ProxyPassReverse /
</Location>
启用了mod_proxy,mod_proxy_http和mod_proxy_wstunnel。
回答我自己。
使用RewriteEngine叙述,提示给出这个帖子,和WebSocket的握手规格:
RewriteEngine On
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:3000/$1 [P,L]
ProxyRequests off
<Location />
ProxyPass http://127.0.0.1:3000/
ProxyPassReverse /
</Location>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句