Open iaguis opened 5 years ago
Seems like a duplicate of https://github.com/golang/go/issues/21336 ?
/cc @bradfitz
I think they're different bugs.
This is more of a documentation or feature request to support http2 proxies. We only support http1 proxies currently.
Is there any plan to support http2 proxy?
same question about plan for this feature. :)
Currently most people implement HTTPS proxies in Go with http.Hijacker
which does not support http2, which mostly means you have to disable http2 completely with TLSNextProto: make(map[string]func(*http.Server, *tls.Conn, http.Handler))
.
We can start to do some tricks and hack our way into getting it working, but official support from GoLang into this direction would be a lot better for everybody.
Currently most people implement HTTPS proxies in Go with
http.Hijacker
which does not support http2, which mostly means you have to disable http2 completely withTLSNextProto: make(map[string]func(*http.Server, *tls.Conn, http.Handler))
.We can start to do some tricks and hack our way into getting it working, but official support from GoLang into this direction would be a lot better for everybody.
I was looking for a way to Achieve HTTP2 with proxy added. Details. Could you elaborate the "We can start to do some tricks and hack our way into getting it working" @g00nix
I was looking for a way to Achieve HTTP2 with proxy added. Details. Could you elaborate the "We can start to do some tricks and hack our way into getting it working" @g00nix
We should be able to get a http2 proxy working by avoiding net/http
completely and just going at a lower level to create the TCP connection and the TLS handshake. I managed to get it working for a transparent proxy, but never invested the time to get this done for a normal proxy.
However it would be better if this was just supported by the official lib, than having to completely rewrite the proxy functionality of net/http
.
Is there any plan to support http2 proxy?
Guys, Is there any plan to support http2 proxy? It’s helpfull for using net/http2 in a cluster
Thanks zcy
I guess this dialer would be a good workaround for now https://github.com/mwitkow/go-http-dialer
This is still an issue with go 1.21. What is the roadmap for this feature? Is it a tricky one to implement?
We should be able to get a http2 proxy working by avoiding net/http completely and just going at a lower level to create the TCP connection and the TLS handshake.
We did the same for an explicit forward proxy.
Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (
go env
)?What did you do?
I have an HTTP/2 proxy (I tested a custom one and https://github.com/caddyserver/forwardproxy) and when trying to connect through it from a client using HTTP/2 I get an error. This does not happen if I don't use HTTP/2.
Here's my code:
If I comment out the
http2.ConfigureTransport()
call (so it will use HTTP/1.1) it works fine.What did you expect to see?
A successful connection.
What did you see instead?
On the proxy server:
On the client: