Skip to content
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

允许HTTP/2使用明文传输 #975

Closed
raidenii opened this issue Mar 21, 2018 · 19 comments
Closed

允许HTTP/2使用明文传输 #975

raidenii opened this issue Mar 21, 2018 · 19 comments

Comments

@raidenii
Copy link

Please skip to the English section below if you don't write Chinese.

中文:
提交 Issue 之前请先阅读 Issue 指引,然后回答下面的问题,谢谢。
除非特殊情况,请完整填写所有问题。不按模板发的 issue 将直接被关闭。

  1. 你正在使用哪个版本的 V2Ray?(如果服务器和客户端使用了不同版本,请注明)
    3.14

  2. 你的使用场景是什么?比如使用 Chrome 通过 Socks/VMess 代理观看 YouTube 视频。
    v2ray使用http/2作为backend,nghttp2作为frontend根据路径决定将请求转发给v2ray或者nginx

  3. 你看到的不正常的现象是什么?(请描述具体现象,比如访问超时,TLS 证书错误等)
    正常使用,但是v2ray使用http2时强制要求tls

  4. 你期待看到的正确表现是怎样的?
    类似ws,http2不要求tls(允许http2 over cleartext),tls交由frontend处理(frontend作为ssl terminator)

  5. 请附上你的配置(提交 Issue 前请隐藏服务器端IP地址)。

    服务器端配置:

    // 在这里附上服务器端配置文件
客户端配置:
    // 在这里附上客户端配置
  1. 请附上出错时软件输出的错误日志。在 Linux 中,日志通常在 /var/log/v2ray/error.log 文件中。

    服务器端错误日志:

Failed to start App|Proxyman|Inbound: failed to listen TCP on 10086 > Transport|Internet: failed to listen on address: [::1]:10086 > Transport|Internet|HTTP: TLS must be enabled for http transport.
    // 在这里附上服务器端日志
客户端错误日志:
    // 在这里附上客户端日志
  1. 请附上访问日志。在 Linux 中,日志通常在 /var/log/v2ray/access.log 文件中。
    // 在这里附上服务器端日志
  1. 其它相关的配置文件(如 Nginx)和相关日志。

请预览一下你填的内容再提交。

如果你已经填完上面的问卷,请把下面的英文部份删除,再提交 Issue。

@DarienRaymond
Copy link
Contributor

暂时不作考虑,Golang不支持这个功能:golang/go#14141

你可以使用Caddy进行http2转发。

@raidenii
Copy link
Author

raidenii commented Mar 21, 2018

caddy试不出来,一直报405,而且反代功能貌似比nginx差了不少(比如反代到带路径的url)
nghttpx目前还行,除了拦截不了backend的error code(caddy也不行,nginx可以)至少可以用了。
thanks anyway

@linshixiong
Copy link

@raidenii
我也想像ws那样,用nginx反代HTTP/2到到v2ray端口,网上说nginx不支持HTTP/2反代,你是如何实现反代的,求教。

@raidenii
Copy link
Author

raidenii commented Apr 4, 2018

说了啊,用nghttpx
apache应该也行,跟nghttpx本质是一个东西,因为apache的http2 proxy使用的是libnghttp2
https://httpd.apache.org/docs/trunk/mod/mod_proxy_http2.html

@mgsqz
Copy link

mgsqz commented Apr 12, 2018

我有个思路,回头我回去试一下,用nginx前端开启stream模块转发ssl端口的tcp流量到v2ray后端,v2ray在后端接收还没解密的ssl流量

@mgsqz
Copy link

mgsqz commented Apr 12, 2018

我是根据域名分流的,如果是根据路径那我不知道了

@mgsqz
Copy link

mgsqz commented Apr 12, 2018

或者nginx使用proxy pass 重写host然后转发为https试试,非专业人士,如有不对请多包涵

@raidenii
Copy link
Author

@mgsqz
host属于header的一部分,不解密ssl看不到
根据域名分流可以不解密(依靠sni),但是两个问题:

  1. 做不到像ws+tls+web的同域名隐藏的隐蔽性
  2. nginx不支持以http/2连接到backend,随便你用什么分流都不行

@o0HalfLife0o
Copy link

3.17服务端好像可以不用指定证书文件了,但是caddy怎么配置还是一脸懵逼

@mgsqz
Copy link

mgsqz commented Apr 14, 2018

@523860169 客户端和服务器必须同时开启 TLS 才可以正常使用这个传输方式。caddy可以转发h2,配置谷歌找找,配置比nginx还简单

@o0HalfLife0o
Copy link

@mgsqz #1049

@raidenii
Copy link
Author

可以用caddy。

@o0HalfLife0o
Copy link

@raidenii 搭配caddy怎么配置?

@raidenii
Copy link
Author

@o0HalfLife0o
Copy link

原来不能加gzip,我去掉就好了,谢谢

@o0HalfLife0o
Copy link

@raidenii 大佬,H2加cloudflareCDN的话,是不是就不行了

@o0HalfLife0o
Copy link

o0HalfLife0o commented Apr 15, 2018

好吧,看来要ws和h2两个同时用了,谢谢

@IceCodeNew
Copy link
Contributor

暂时不作考虑,Golang不支持这个功能:golang/go#14141

你可以使用Caddy进行http2转发。

您好,Golang 在 2018 年 7 月合并的一个 CL 里已经实现了 h2c。请问开发者这边是否可以考虑允许 HTTP2 使用明文传输了呢?
我现在的确是用 caddy 做的 H2 反代,但是性能损失很大。在用 IDM 下载文件时会变得无法缓冲 YouTube 视频。我用 tcpdump 抓包以后发现被 caddy 抓发后的流量居然还是加密的,确认了这里是性能瓶颈后我找到了这个 issue,并且希望能重新打开这个 issue 让开发者注意到。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants