Azure API Management能否配置相同路由的HTTP与WebSocket网关端点
Azure API Management 同端点同时支持HTTP/HTTPS与WS/WSS路由配置方案
你可以通过APIM的协议判断入站策略实现同端点路由,无需额外配置路径后缀,操作步骤如下:
- 创建新API时,将API的URL后缀设置为空,保证对外暴露的基础路径为
http(s)://{base_url}和ws(s)://{base_url},同时在API设置页勾选启用WebSocket选项,放行WS/WSS协议请求接入。 - 进入该API的策略配置页,添加入站分流策略,根据请求协议自动转发到对应后端:
<policies> <inbound> <base /> <choose> <!-- 匹配WS/WSS协议的WebSocket请求 --> <when condition="@(context.Request.Url.Scheme == "ws" || context.Request.Url.Scheme == "wss")"> <set-backend-service base-url="替换为你的WebSocket后端服务地址" /> </when> <!-- 匹配普通HTTP/HTTPS请求 --> <otherwise> <set-backend-service base-url="替换为你的普通HTTP后端服务地址" /> </otherwise> </choose> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>
- 保存配置后即可测试,无需添加路径后缀即可同时访问:
- 普通HTTP请求:
http(s)://{base_url} - WebSocket连接:
ws(s)://{base_url}
- 普通HTTP请求:
额外说明:如果你的HTTP服务和WebSocket服务部署在同一个后端地址下,不需要做协议分流,则无需配置上述策略,仅需在API设置中勾选启用WebSocket、填写统一的后端地址即可直接使用。
内容的提问来源于stack exchange,提问作者omnomnom
相关产品推荐
相关产品推荐

