你好,
我在排查 EMQX HTTP 接口与 Proxy Protocol 的兼容性问题,想确认一下这是否属于预期行为。
环境信息:
- EMQX 部署在 Kubernetes 上
- 18083 端口用于 EMQX Dashboard / HTTP API
- 前面接了 NLB
- NLB 的 listener 开启了 Proxy Protocol
问题现象:
当请求到达 EMQX 的 HTTP 接口时,如果在 HTTP 请求数据之前携带了 Proxy Protocol 头,请求会返回 HTTP 400。
我观察到的现象:
- 正常的 HTTP 请求访问 EMQX 接口是成功的
- 如果同样的请求前面加上 Proxy Protocol,再发给 EMQX,则返回 HTTP 400
- 因此我怀疑 18083 这个 HTTP 接口本身并不支持 Proxy Protocol 解析
我当前的理解是:
- Proxy Protocol 是加在真正的 HTTP 请求内容之前的
- 如果服务端在该端口不支持 Proxy Protocol,那么它会把前面的字节流当成非法 HTTP 请求处理,从而返回 400
我想确认的问题:
- EMQX 的 18083 端口(Dashboard / HTTP API)是否支持 Proxy Protocol v1 或 v2?
- 如果不支持,那么当请求带着 Proxy Protocol 到达时,返回 HTTP 400 是否属于预期行为?
- Proxy Protocol 是否只支持 MQTT / WebSocket listeners,而不支持 Dashboard 的 HTTP 接口?
总结一下:
目前看起来,向 EMQX 18083 端口发送“带 Proxy Protocol 的 HTTP 请求”会返回 HTTP 400。我想确认这是否是设计上的预期行为。
谢谢。