Skip to content

Can I use Vercel as a reverse proxy?

Learn how to use rewrites to proxy requests from Vercel to other deployments.

2 min read
Last updated March 24, 2026

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 origins, commonly used as part of an incremental migration to Vercel.

Proxying puts the Vercel CDN in front of your backend, improving performance through Vercel's global network and reducing cost with built-in caching. It also adds a layer of security with the Vercel Firewall.

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',
},
]
},
}

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"
}
]
}

You can also configure reverse proxying without modifying code using project-level routing rules.

These rules are applied at the CDN layer and take effect immediately without redeployment.

To create a rewrite rule with the Vercel CLI, run the following commands:

vercel routes add "Blog Proxy" \
--src "/blog" \
--src-syntax path-to-regexp \
--action rewrite \
--dest "https://acme.com/blog" \
--yes
vercel routes publish --yes

Project-level routing rules can also be configured through the Vercel Dashboard, REST API, or SDK.

Review the following links for more advanced use cases:

Was this helpful?

supported.