Search code examples
javascriptnode.jsreactjsnext.js

Proxy to backend with default Next.js dev server


Before, when I made apps with create-react-app, I would have a setupProxy.js file that would route API requests similar to this

const proxy = require('http-proxy-middleware');
module.exports = function(app) {
    app.use('/api',
        proxy({
            target: 'http://localhost:8000',
            changeOrigin: true,
        })
    );
};

But that doesn't seem to work with next.js. When I do the same thing, I get various errors.

Googling a solution, a lot say to use a custom server of some kind. But how would I accomplish a proxy like above using the default nextjs dev server? (Equivalent of npm run dev when dev in my package.json is next dev.


Solution

  • There is now an official feature for this in the config: Rewrites

    Besides normal path rewrites, they can also proxy requests to another webserver

    next.config.js:

    module.exports = {
      async rewrites() {
        return [
          {
            source: '/api/:path*',
            destination: 'http://localhost:8000/:path*' // Proxy to Backend
          }
        ]
      }
    }
    

    See Next.js Docs Rewrites