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:
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.
{ "rewrites": [ { "source": "/blog", "destination": "https://acme.com/blog" } ]}
Review the following links for more advanced use cases: