-
Notifications
You must be signed in to change notification settings - Fork 31
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
[v4.20+][已解决] 正确配置 caddy 等反向代理以和后端 v2ray 服务建立 h2c 连接 #296
Comments
caddy有个 grpc跑的正是http2协议,试试能否把h2c流量正确转发 |
那是因为caddy就不支持h2c把. |
好了 大羽毛支持h2c代理. 你不用谢我. 哈哈哈哈哈哈哈. |
跟ws不是一个鸟样 结论. 越来越逗了. 算了我不逗你了. |
traefik支持h2c后端的,只为分流的话traefik挺合适 |
你自相矛盾 终止tls是那种tls客户端接过去 后端直接http连接的 属于web自己解自己的. |
NGINX can already proxy gRPC TCP connections. With this new capability, you can terminate, inspect, and route gRPC method calls. You can use it to: http://nginx.org/en/docs/http/ngx_http_grpc_module.html |
你连发了这么多条评论,就不知道多路复用么? 老兄啊,GitHub 上面没有屏蔽功能,小弟我实在拿你的垃圾回复没有办法。不知道您能不能发发慈悲,放我一个清净呢?如果你真的觉得你的回复非常有价值,不如另开一贴好了。 |
gRPC 的确支持 h2c,而把 v2ray 类比地想象成一个 gRPC server 感觉确实也没什么问题。 |
以上推荐的这些应用对我而言非常陌生。而总的来说我对于推荐应用的态度是:如果我们想做的事主流的应用都不给予支持(打个比方:NGINX、HaProxy、Caddy、Apache,也许还有些其他的社区比较成熟的应用),那么我们是否还应该走这条路就值得思考了。 |
至少 haproxy 和 nghttpx 最新版都是支持的。我就是用这俩来测试的。具体来说,前端 tls termination 是一直就有支持的,按照习惯写就行;后端 H2C 的支持,haproxy 直接写 |
感谢回复! |
我测试的时候就是 haproxy/nghttpx 直接接受 H2 的连接解密以后给 v2ray。当然你说的这种做法理论上也是可以的。不过建议考虑一下 haproxy/nghttpx 放最前面,然后还是根据 header 或者 path 分流给后端(Caddy 或者 v2ray)。既然 Caddy 跟 v2ray 配合有点儿问题,那干脆分开各干各的好了 |
嗯,好的,谢谢建议~ |
h2c测试不通,无法联网 |
贴下错误信息让大家看看?(建议参考 v2ray-core 库给的 issue 模板) |
做了下调研,NGINX 目前还不支持 reverse proxy from h2 to h2c(Refer to doc) 个人认为 HAProxy 是当下的 Best option。 |
看了下你们的对话😂 |
最近也偶然看到v2ray支持h2c了,折腾了一下,走不通,症状和你相同,放弃了😝 |
看的4.20新版支持h2c,我也尝试在v2ray服务端和caddy中用h2c连接,也失败了。目前使用老方法客户端和caddy用h2传输,caddy解密后获取path分流,再次加密把数据转给v2ray服务端,v2ray再次解密。如果来回加密解密两次。性能影响虽然不大,但还是觉得第二次加密没有必要。还有我感觉h2也和websocket一样,有时会断流不知道怎么回事 |
今天看到caddy doc 有这一段 websocket : Indicates this proxy is forwarding WebSocket connections. It is shorthand for:
https://caddyserver.com/docs/proxy 所以 caddy h2c 反向代理 还要等等 |
楼楼上和楼楼楼上配不通可以放一下配置文件,我早就已经搞出来了。 |
@IceCodeNew 我的配置文件和你帖子中配置文件差不多,思路一样。v2ray接收来自caddy流量如果不开启tls就会不通。只能开启tls(多一道加密解密).希望楼主分享下经验,终结此贴。 |
额,我记得我前面是说过 Caddy 不支持 h2c 的……没有的话我看楼上不远也有人帮我把具体的官方文档引出来了。 |
haproxy的http模式反代h2断流特别严重。不晓得什么原因,网页能开,tg居然登录不上。tcp模式没问题。 |
这里是讨论如何配置 h2c,不是用来交流玄学断流问题的。 |
caddy 是不支持的,可以考虑使用我的修改版 /~https://github.com/liberal-boy/caddy |
额,你们没人试试Apache吗,Apache明确支持h2c哦~ |
@firedent
但是好像出错了😨 |
为什么V2ray不搞个像Caddy一样的建站功能,这样单个V2ray就能实现H2+TLS+WEB了,伪装程度一点也不差啊。谁能提提议一下啊~~~ |
233boy的脚本已经满足了这个需求 |
测试了下用Nginx的grpc,不通,v2ray服务端像是没收到请求一样哪怕把loglevel调到了debug也没有输出
v2ray客户端
|
Have done for nginx using the stream module to reversing proxy the h2c to v. |
any example config or tutorial ? |
luajit code in stream config block |
i haven't noticed that before, thanks |
我试了试,会出问题 |
看到最近 cloudflare 支持了 grpc ,想问下有没有人成功实现了让 v2ray 通过 grpc 通信 |
refer to #1644
感谢 @lucifer9 @xiaokangwang 及其他开发者的努力,目前最新版的 v2ray 已经实现了对 h2c 的支持。
但是如何正确地配置 caddy 或其他反向代理来将收到的流量解密,转发给后端的 v2ray,其实并不是一个非常容易的事。故开一个 issue,希望与网友们共同交流思路,并把相关经验整理成文档,为后来人指路。
话休絮烦,下面是 v2ray 服务端和 caddyfile 的配置文件,注释部分是原来没有 h2c 支持的时候的配置。我先做了最简单的修改,也就是我一眼就能看出来需要调整的部分。如果还有问题,那就再一点点补充好了。
客户端逻辑上来说不需要任何更改。
测试下来发现上面的这段配置其实上是不通的。具体的表现是服务器响应超时,留心这一点可能可以减少需要排查的问题的方向。
我现在的思路是通过指定 ALPN 来调整 Caddy 的行为,在官方文档的这一段给了我启发:晚上空下来了仔细查了下 ALPN 这个东西,发现它原来是一个 “Transport Layer Security (TLS) extension for application-layer protocol negotiation. ”
好吧,h2c 和 ALPN 一点关系也没有……
而且在仔细阅读了下面一位非常烦人的网友若干条回复后,我居然另外看到了一段非常具有启发性的引用。顺藤摸瓜找到一个可靠的文档后,我认识到:
h2c 连接说不定都是通过在 HTTP/1.1 消息体中指明“h2c” token 来建立的——换句话说我之前抓包看到的不是一个 bug,是一个 feature……
那么为什么 v2ray 服务端没有响应这个升级请求呢?感觉可能要看看相对应的源代码了。
所以到底应该怎么样才能让 Caddy 和 v2ray 服务端之间建立 h2c 连接呢?我暂时还没有头绪,欢迎网友们贡献思路。
The text was updated successfully, but these errors were encountered: