-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
XHTTP client: Add gRPC header to "stream-up" mode by default #4042
Conversation
其实 2d7b0e8 已经修好了 packet-up 的上行问题,你用 main 也不会 fail |
就是给加个content type的模式有必要么 顺便昨天那个pr为啥没合 还打算改吗 |
因为想改为默认 fakegrpc-up,最好是有一个新的模式名,现在打算改成 TLS/REALITY H2 时默认 fakegrpc-up,否则 packet-up
等下就合,不过我给 XHTTP 加了 "stream-full" 模式后,HTTP 传输层就彻底能被取代了, |
To j2rong:CDN 对 gRPC 的流量限制确实是需要考虑的因素,这么说的话还是先不弄 "fakegrpc-full",保持上下行逻辑性分离吧 To jiang zhexin:严格来说 H1 支持流式上行,但实际情况是有些实现不支持,比如 Nginx 回源时,所以我说的是 H1 不太支持 |
对了,配置那里加 grpc header 的话有个缺点是下行也会被加上,然后 CDN 可能对 gRPC 有流量限制, 打算更新下这个 PR 就发版,这次的 fakegrpc 上行加正常下行,配合 header padding、xmux 等, |
感谢 jiang zhexin 提供的重要信息,已更新 #3994 的说明 |
对 cf 来说 grpc 标头后跑啥都没区别,平替其实没给它加“滥用”,只是我们不必带着 grpc 库玩了,主要是性能优化, |
To jiang zhexin: |
|
决定简单一点,直接给 stream-up 加 |
This comment was marked as resolved.
This comment was marked as resolved.
|
去掉就是 HTTP 1.0, Nginx 到后端只支持 HTTP 1.0 和 HTTP 1.1 且默认是 HTTP 1.0 |
@gubiao 改成 grpc_pass 试试 |
This comment was marked as resolved.
This comment was marked as resolved.
Nginx 改成:
同时在 CF 面板中开启 GRPC 支持貌似可以了,虽然是通过 Content-Type 伪装的 GRPC 但 CF 面板中的 GRPC 仍然必须开启才行。 |
|
To 艾莉卡:
因为比 gRPC 强,但凡看一下这个 PR 写了啥:#4042 (comment)
不是靠 gRPC 头,但凡看一下上个 PR 写了啥:#3994 (comment) |
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
我的,没看到新PR😫
感觉不像。我用
都能跑通 |
@lxsq 所以只要加上 proxy_request_buffering off 就行,和请求的 Content-Type 无关对吧 |
Is it possible to add a websocket header and use stream-up for H1 CDN (like HTTPUpgrade) ? |
它默认启用
Xray 服务端会响应
它默认不启用 |
测试了一下,确实加上 |
Can you set noGRPCHeader : true |
不会设为默认 true,btw,具体会有什么问题 |
IDK i have some problem to make fake-grpc work with caddy when i use stream-up mode
I don't know what the problem is |
https://t.me/projectXtls/501 #4038 (comment)
这个 PR 给 stream-up 模式的上行 POST 请求默认加上了
Content-Type: application/grpc
的 header,伪装成 gRPC 以穿透一些本来会缓存上行请求、用不了流式上行的中间盒,经测试 CF H2 支持、H3 不支持,而 CFT H2、H3 均无需这个伪装XHTTP stream-up 模式已经可以取代传统的 gRPC 传输层,前者的优势主要有:
当然,若你不想把它伪装成 gRPC,可以在客户端设置
"noGRPCHeader": true
,就像服务端的 noSSEHeader此外,这个 PR 修改了客户端 "auto":TLS H2 或
REALITY时 stream-up,否则 packet-up,所以有时你需要手动选 packet-up未来可能会加个 "
stream-full" 模式,即同一个 HTTP 请求同时承载上下行、完全不分离,类似于现有的 HTTP 传输层这次有没有又开启了一个崭新的时代不重要,支持一下 Project X NFT 非常重要:Announcement of NFTs by Project X #3633