Execute create-next-app with Yarn or npx to bootstrap the example:
npx create-next-app --example with-zones with-zones-app
# or
yarn create next-app --example with-zones with-zones-appDownload the example:
curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/with-zones
cd with-zonesInstall it and run:
npm install
# or
yarnWith Next.js you can use multiple apps as a single app using it's multi-zones feature. This is an example showing how to use it.
In this example, we've two apps: 'home' and 'blog'.
We also have a set of rules defined in rules.json for the proxy.
Now let's start two of our app using:
npm run home
npm run blog
# or
yarn home
yarn blogThen start the proxy:
npm run proxy
# or
yarn proxyNow you can visit http://localhost:9000 and access and develop both apps a single app.
This is the place we define rules for our proxy. Here are the rules(in rules.json) available for this app:
{
"rules": [
{
"pathname": "/blog",
"method": ["GET", "POST", "OPTIONS"],
"dest": "http://localhost:5000"
},
{ "pathname": "/**", "dest": "http://localhost:4000" }
]
}These rules are based on ZEIT now path alias rules and use micro-proxy as the proxy.
- All pages should be unique across zones. A page with the same name should not exist in multiple zones. Otherwise, there'll be unexpected behaviour in client side navigation.
- According to the above example, a page named
blogshould not be exist in thehomezone.
- According to the above example, a page named
Here's how are going to deploy this application into production.
- Open the
now.jsonfile in bothblogandhomedirectories and change the aliases as you wish. - Then update
rules-prod.jsonaccordingly. - Now deploy both apps:
cd home
now && now alias
cd ../blog
now && now alias
cd ..- Finally, set the path alias rules with
now alias with-zones.now.sh -r rules-prod.jsonYou can use a domain name of your choice in the above command instead of
with-zones.now.sh.
That's it. Now you can access the final app via: https://with-zones.now.sh