Can I use Vercel as a reverse proxy?

Learn how to use rewrites to proxy requests from Vercel to other deployments.
Last updated on May 8, 2024
Build, Deployment & Git

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.

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).

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.

Review the following links for more advanced use cases:

Couldn't find the guide you need?