# 功能说明
`http2-misdirect`插件用于解决网关开启 HTTP2 时，因为浏览器复用连接导致访问出现 404 等问题。

# 插件原理

HTTP2 协议允许两个不同域名的请求，在域名解析到相同 IP，并且使用了相同证书的情况下，复用同一条连接。这在一些特殊场景会导致复用连接的请求发送给了错误的 Virtual Host 进行处理，从而导致出现 404 等问题。
本插件基于`HTTP/2 RFC 7540`的`9.1.1`和`9.1.2`章节描述，在发现请求 SNI 与当前 Virtual Host 不匹配时，发送 HTTP 421 状态码，强制浏览器新建连接，并根据当前请求域名生成匹配的 SNI，从而让网关能正确处理路由。

# 浏览器兼容性

`Safari` 浏览器 `15.1` 版本以下不支持 HTTP 421 状态码，若有此类客户端访问场景，建议对相应域名关闭 HTTP2 的 ALPN
