Skip to content
Closed
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/api/ctx.md
Original file line number Diff line number Diff line change
Expand Up @@ -2176,6 +2176,7 @@ resources while the server prepares the full response.
:::caution
This feature requires HTTP/2 or newer. Some legacy HTTP/1.1 clients may not
Comment thread
akilesh1706 marked this conversation as resolved.
Outdated
Comment thread
akilesh1706 marked this conversation as resolved.
Outdated
Early Hints (`103` responses) are supported in HTTP/2 and newer. Older HTTP/1.1 clients may ignore these interim responses or misbehave when receiving them.
See [Enabling HTTP/2](../guide/reverse-proxy.md) for instructions on how to use a reverse proxy (e.g. Nginx or Traefik) to enable HTTP/2 support.
:::

```go title="Signature"
Expand Down
85 changes: 85 additions & 0 deletions docs/guide/reverse-proxy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
---
id: reverse-proxy
title: reverse-proxy
Comment thread
akilesh1706 marked this conversation as resolved.
Outdated
description: >-
Learn how to set up reverse proxies like Nginx or Traefik to enable modern
HTTP capabilities in your Fiber application, including HTTP/2 and the
experimental HTTP/3 (QUIC) support. This guide also covers basic reverse
proxy configuration and links to external documentation.
sidebar_position: 4
---

# Reverse Proxies

Check failure on line 12 in docs/guide/reverse-proxy.md

View workflow job for this annotation

GitHub Actions / markdownlint

Multiple top-level headings in the same document

docs/guide/reverse-proxy.md:12 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Reverse Proxies"] https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md025.md

## Enabling HTTP/2

Some features in Fiber, such as SendEarlyHints, require HTTP/2 or newer. If your app is served directly over HTTP/1.1, certain features may be ignored or not function as expected.

To enable HTTP/2 in production, run Fiber behind a reverse proxy that upgrades connections. Popular choices include Nginx and Traefik.

<details>
<summary>Nginx Example</summary>

```nginx title="nginx.conf"
server {
listen 443 ssl http2;
server_name example.com;

ssl_certificate /etc/ssl/certs/example.crt;
ssl_certificate_key /etc/ssl/private/example.key;

location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
}
Comment thread
akilesh1706 marked this conversation as resolved.
}
```

Check failure on line 38 in docs/guide/reverse-proxy.md

View workflow job for this annotation

GitHub Actions / markdownlint

Fenced code blocks should be surrounded by blank lines

docs/guide/reverse-proxy.md:38 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```"] https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md031.md
This configuration enables HTTP/2 with TLS and proxies requests to your Fiber app on port 3000.
</details>
<details>
<summary>Traefik Example</summary>

```yaml title="traefik.yaml"
entryPoints:
websecure:
address: ":443"

http:
routers:
app:
rule: "Host(`example.com`)"
entryPoints:
- websecure
service: app
tls: {}

services:
app:
loadBalancer:
servers:
- url: "http://127.0.0.1:3000"
```

Check failure on line 63 in docs/guide/reverse-proxy.md

View workflow job for this annotation

GitHub Actions / markdownlint

Fenced code blocks should be surrounded by blank lines

docs/guide/reverse-proxy.md:63 MD031/blanks-around-fences Fenced code blocks should be surrounded by blank lines [Context: "```"] https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md031.md
With this configuration, Traefik terminates TLS and serves your app over HTTP/2.
</details>

## HTTP/3 (QUIC) Support

Early Hints (103 responses) are officially part of HTTP/2 and newer. Many reverse proxies also support HTTP/3 (QUIC):

- **Nginx**: Requires a recent build with QUIC/HTTP3 patches.
- **Traefik**: Supports HTTP/3 via its entryPoint configuration.

Enabling HTTP/3 is optional but can provide lower latency and improved performance for clients that support it. If you enable HTTP/3, your Early Hints responses will still work as expected.

For more details, see the official documentation:

- [Nginx HTTP/2 Module](https://nginx.org/en/docs/http/ngx_http_v2_module.html)
- [Nginx QUIC / HTTP/3](https://nginx.org/en/docs/quic.html)
- [Traefik HTTP/3](https://doc.traefik.io/traefik/reference/install-configuration/entrypoints/#http3)

Few of the available Reverse Proxies
Comment thread
gaby marked this conversation as resolved.
Outdated
- [Nginx](https://nginx.org/)

Check failure on line 83 in docs/guide/reverse-proxy.md

View workflow job for this annotation

GitHub Actions / markdownlint

Lists should be surrounded by blank lines

docs/guide/reverse-proxy.md:83 MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "- [Nginx](https://nginx.org/)"] https://github.com/DavidAnson/markdownlint/blob/v0.38.0/doc/md032.md
- [Traefik](https://traefik.io/?gad_campaignid=20537010384)
Comment thread
akilesh1706 marked this conversation as resolved.
Outdated
- [HA PROXY](https://www.haproxy.com/documentation/)
Comment thread
akilesh1706 marked this conversation as resolved.
Outdated
Loading