Can I use Vercel as a reverse proxy?

Vercel offers native support for using a reverse proxy through rewrites. This guide will show how to set up rewrites to proxy requests to external domains, commonly used as part of an incremental migration to Vercel.

Reverse proxying with rewrites

Rewrites allow you to send users to different URLs without modifying the visible URL. They allow you to change the URL path, query parameters, and headers of the request before it reaches your server.

You can also use them to return different responses depending on the headers of the incoming request (such as User-Agent, which contains the type of device and browser that the request originated from).

Using Vercel rewrites to reverse proxy

Vercel supports many different frameworks which have native support for reverse proxying. For example, with Next.js:

next.config.js
module.exports = {
async rewrites() {
return [
{
source: '/blog',
destination: 'https://acme.com/blog',
},
]
},
}
Request to the blog subpath will reverse proxy to a different URL.

If your framework does not support rewrites, you can also define rules in a vercel.json file located in the root of your application. This enables you to reverse proxy any project.

vercel.json
{
"rewrites": [
{
"source": "/blog",
"destination": "https://acme.com/blog"
}
]
}
Request to the blog subpath will reverse proxy to a different URL.

Learn more

Review the following links for more advanced use cases:

Couldn't find the guide you need?