-
Notifications
You must be signed in to change notification settings - Fork 40.9k
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
Automatically enable h2c when HTTP/2 is enabled without SSL #25856
Comments
That would be very valuable for application inside a mesh. Additionally this could be interesting to support management endpoint as well, who need to be configured programmatically as well, see #25858 |
We've discussed that briefly with @scottfrederick and @snicoll. Here's a brief summary of our discussion. Back when we introduced the HTTP/2 feature, we didn't want to push for the "h2c" use case because many key features of http/2 are about security. There were additional concerns about compatibility, since protocol upgrades over HTTP are not always well supported by proxies and server. Now platform and service mesh products seem to enable the h2c use case in a different way and making this use case easier could help the community. It seems that CloudFoundry will not rely on h2c but on http/2, since the routing component relies on TLS for route integrity, see cloudfoundry/routing-release/issues/200. |
@wilkinsona I see the labels in the top-right corner for this issue. But... I am super interested and cobbled together a 1st pass proposal. NOTE
The spirit of the proposal is enabling the aforementioned code changes by respecting the new Proposal is here (I did not submit in this repo to avoid clutter in case you take a different route). Once you take a scan please lmk what you think:
|
Having explored a few different options for the configuration property, I've come to the conclusion that we probably do not need one. Instead, we can allow HTTP/2 to be enabled without SSL. In this configuration, h2c will be used. When both HTTP/2 and SSL are enabled, h2 will be used. Here is what that could look like. I'd like to get the rest of the team's opinions before merging. |
Closed by 713c0fc. |
Great to see this happening! Will this work with the management endpoints as well? |
If you want to use HTTP/2 from end-to-end, an app that's running behind a proxy that's performing TLS termination will need to use h2c. We already support it, but there's no configuration property to enable it. Instead, you need to write some code and the complexity varies depending on the embedded container that you're using,
The text was updated successfully, but these errors were encountered: