Skip to content

NGF: Add document for upstream http2#2021

Open
bjee19 wants to merge 1 commit into
nginx:ngf-release-2.7from
bjee19:ngf/http2-appProtocol
Open

NGF: Add document for upstream http2#2021
bjee19 wants to merge 1 commit into
nginx:ngf-release-2.7from
bjee19:ngf/http2-appProtocol

Conversation

@bjee19
Copy link
Copy Markdown
Contributor

@bjee19 bjee19 commented Jun 3, 2026

Proposed changes

Add document on supporting http2 to upstream through the appProtocol field on a Service.

Checklist

Before sharing this pull request, I completed the following checklist:

Footnotes

  1. Potentially sensitive information includes personally identify information (PII), authentication credentials, and live URLs. Refer to the style guide for guidance about placeholder content.

@bjee19 bjee19 requested a review from a team as a code owner June 3, 2026 05:49
@github-actions github-actions Bot added documentation Improvements or additions to documentation product/ngf Issues related to NGINX Gateway Fabric labels Jun 3, 2026
@bjee19
Copy link
Copy Markdown
Contributor Author

bjee19 commented Jun 3, 2026

This is a shorter guide which is technically covering a Kubernetes concept (Service's appProtocol), however I couldn't find a suitable document to include this information in. So I decided to write a standalone document for it.

@bjee19 bjee19 requested a review from a team June 3, 2026 05:49
f5-summary: This guide shows you how to configure NGINX Gateway Fabric to proxy requests to upstream services over HTTP/2 by setting appProtocol to kubernetes.io/h2c on a Kubernetes Service port. Using HTTP/2 for upstream connections enables multiplexing and reduces latency for services that support it. This guide is for operators and developers who have NGINX Gateway Fabric installed and are familiar with Kubernetes Services and the Gateway API.
---

Learn how to configure NGINX Gateway Fabric to use HTTP/2 when proxying requests to upstream services using the Service `appProtocol`.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

appProtocol is a application protocol for a service port so this sentence seems misleading a bit?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Learn how to configure NGINX Gateway Fabric to use HTTP/2 when proxying requests to upstream services using the Service `appProtocol`.
Learn how to configure NGINX Gateway Fabric to use HTTP/2 when proxying requests to upstream services.

I think should be enough here

Comment on lines +167 to +175
```nginx
location /coffee {
...
proxy_http_version 2;
proxy_pass http://default_coffee_80;
...
}
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so the curl doesn't return the protocol? or a different response to identify a http2 connection?

## Important Notes

- `kubernetes.io/h2c` is supported on HTTPRoutes and GRPCRoutes. It isn't supported on TLSRoutes.
- For NGINX to set `proxy_http_version 2` for a location, all valid backend references in the routing rule must have `appProtocol: kubernetes.io/h2c` set on their Service ports. If any valid backend doesn't use `kubernetes.io/h2c`, NGINX falls back to the default HTTP/1.1.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think this could be in the troubleshooting section

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation product/ngf Issues related to NGINX Gateway Fabric

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants