Opened 21 months ago

Last modified 6 months ago

#923 reopened enhancement

Allow proxy_http_version 2.0

Reported by: mmarkus@… Owned by:
Priority: minor Milestone:
Component: nginx-core Version: 1.9.x
Keywords: Cc:
Sensitive: no
uname -a:
nginx -V: 1.9.12

Description

We are working on migrating the service to service calls to gRPC. We use nginx as an gateway that proxies to a pool of gRPC servers (HTTP2.0).
Is there a plan to support this feature and if so an ETA for it? This would help Square to move forward but also seems like a pretty common setting for the gRPC enabled deployments.

Change History (7)

comment:1 Changed 21 months ago by mdounin

  • Resolution set to wontfix
  • Status changed from new to closed

There are no plans to implement HTTP/2 support in the proxy module in the foreseeable future, see detailed answer here. If you want to use nginx to balance multiple servers, consider using the stream module to do this.

comment:2 Changed 21 months ago by mmarkus@…

Replying to mdounin:

There are no plans to implement HTTP/2 support in the proxy module in the foreseeable future, see detailed answer here. If you want to use nginx to balance multiple servers, consider using the stream module to do this.

Thanks for the quick response.
I don't think level 4 proxying would work for us, specifically in situations where a small number of clients are connected to a large pool of backend servers: each client would issue all its requests over the same TCP connection to the same backend server, potentially exhausting it.
Regarding your comment on the limit on number of simalteneous requests :the way I was thinking about load balancing is to have nginx dispatch different stream to different backend servers, which I think should solve the problem. (not very familiar with nginx/http2 so the idea might be way off)


Last edited 21 months ago by mmarkus@… (previous) (diff)

comment:3 Changed 15 months ago by cicerocomp@…

For those who come here and still need to make a proxy HTTP2 protocol:

https://nghttp2.org/blog/2015/03/24/proxying-grpc-with-nghttpx/

comment:4 Changed 6 months ago by RoiEXLab@…

  • Resolution wontfix deleted
  • Status changed from closed to reopened

While it might be worse when using HTTP/2 instead of HTTP/1.1 between nginx and your server, not implementing such a feature has a huge downside.
On of the features of HTTP/2 is Server-Side pushes which are therefor not supported at all when using nginx as reverse proxy.
There is no workaround for this other than simply not using nginx and connect to the server directly.

comment:5 Changed 6 months ago by mdounin

HTTP/2 push has nothing to do with HTTP/2 support to upstreams, it can be easily (and likely more efficiently) implemented without using HTTP/2 to upstreams, see here.

comment:6 Changed 6 months ago by mdounin

  • Component changed from documentation to nginx-core
  • Priority changed from critical to minor

comment:7 Changed 6 months ago by cicerocomp@…

I do not know if it should be critical, but it should be at least major

Note: See TracTickets for help on using tickets.