-
Notifications
You must be signed in to change notification settings - Fork 489
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Added doc for for web server deployment (#1813)
Co-authored-by: Alexis Aguilar <[email protected]>
- Loading branch information
1 parent
d27b673
commit 3330da2
Showing
2 changed files
with
58 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
--- | ||
title: Deploy a Clerk app behind a proxy | ||
description: Learn how to deploy a Clerk app to a web server using proxies and reverse proxies like nginx or Caddy, or using Docker. | ||
--- | ||
|
||
When deploying a Clerk app behind a proxy, you must forward two headers: | ||
|
||
- `X-Forwarded-Host` - The host of the request. | ||
- `X-Forwarded-Proto` - The protocol of the request. | ||
|
||
Here are some common platforms and servers that require header proxying: | ||
|
||
- [nginx](https://nginx.org/en/) | ||
- [Caddy](https://caddyserver.com/) | ||
- [Docker](https://www.docker.com/) | ||
- [AWS Amplify](https://amplify.com/) | ||
|
||
## `nginx` configuration example | ||
|
||
The following can be added to your `nginx` configuration to forward the headers to your application. | ||
|
||
```nginx | ||
proxy_set_header X-Forwarded-Host $host; | ||
proxy_set_header X-Forwarded-Proto https; | ||
``` | ||
|
||
## Test header forwarding | ||
|
||
To test if the headers are forwarded correctly, you can console log them to check what their values are. They are available on the `request` object. | ||
|
||
```ts {{ filename: 'middleware.ts' }} | ||
export default clerkMiddleware( | ||
(auth, req) => { | ||
console.log('=========================') | ||
console.log('Request Headers') | ||
console.log('x-forwarded-host', req.headers.get('x-forwarded-host')) | ||
console.log('x-forwarded-proto', req.headers.get('x-forwarded-proto')) | ||
console.log('=========================') | ||
}, | ||
{ debug: debugStatus }, | ||
) | ||
``` | ||
|
||
The `X-Forwarded-Host` header should return the same domain as the one you configured on the [**Domains**](https://dashboard.clerk.com/last-active?path=domains) page in the Clerk Dashboard. The `X-Forwarded-Proto` header should return `https` as Clerk requires this value to be `https` for production instances. | ||
|
||
Here is an example result: | ||
|
||
```log | ||
========================= | ||
Request Headers | ||
x-forwarded-host example.com | ||
x-forwarded-proto https | ||
========================= | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters