大家好:
有如下需求,使用openresty做反向代理,同时支持http和websocket,如果服务类型是WebSocket类型进行必要的配置。
初步的方案是,利用nginx对websocket的原生支持,在location内部增加access_by_lua_block或rewrite_by_lua_block,内部判断如果是websocket类型的,使用ngx.req.set_header设置http头,通过抓包发现设置其他header生效、但设置Upgrade和Connection无效,请各位大师帮看下:该方案是否可行?如果不可行还望不吝赐教哈
upstream defaultserver{
...
}
server{
listen 8989;
proxy_http_version 1.1;
location /api {
set $backserver "defaultserver";
access_by_lua_block {
if (service.type == "websocket") then
ngx.req.set_header("Upgrade",ngx.var.http_upgrade)
ngx.req.set_header("Connection","Upgrade")
ngx.var.backserver = "wsserver";
end
}
}
}