I've nginx-proxy and nginx-server docker containers.

client browser < > nginx-proxy is http2 and 443 via proxy_pass.

nginx-proxy < > nginx-server is http1 and I'd like to move it to http2 but without SSL - since they are both on same server, I don't see benefit of encrypting traffic.

I read nginx docs, and they say that it supports http2 without ssl. so I added 80 http2; to listen directive in nginx-server vhost.

However, instead of showing website, browser downloads the file with following content:

0000 1204 0000 0000 0000 0300 0000 8000
0400 0000 0000 0500 ffff ff00 0004 0800
0000 0000 7fff 0000 0000 0807 0000 0000
0000 0000 0000 0000 01

it looks awfully like this issue but mine is not browser <> nginx issue but nginx <> nginx issue. Which shouldn't exist, because docs say nginx supports http2 without ssl.

How do I let nginx-proxy understand that backend nginx-server speaks http2... I guess that's the problem since hex dump says: malformed packet.

This issue states that it is not possible, and will not be implemented.


Your benefits of doing this will be minimal because the latency is very low between software on the same server. Given it's either very difficult or impossible I wouldn't spend your time on this.

  • it is also impossible as I found out. – user113400 May 10 '16 at 7:39
  • 2
    Why is it impossible? Most web browsers don't currently support HTTP/2 without SSL, but hopefully eventually some will, at least with third part plug-ins anyways. The speed of HTTP/2 without the overhead of SSL would be great to offer as an option. – orrd Jul 22 '16 at 22:50
  • For those that are trying to dispute this guy, directly from NGINX themselves....You are misinterpreting what HTTP2 means and its usefulness...In the OP scenario it would make it worse... serverfault.com/questions/765258/… So to those that are down voting this answer or fighting against the answer of impossible, that is actually the correct answer. So all-in-all its just bringing a good question down. – ZaxLofful Aug 20 '18 at 21:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy