You are reading Edgio Applications v4 docs. Check out our latest docs for Edgio Applications v7.


This guide shows you how to deploy an Gatsby application to Edgio.



Before proceeding, you will need an Edgio property. Create one now if you do not already have one.
Learn how to create a property.

System Requirements

Sign up for Edgio

Deploying requires an account on Edgio. Sign up here for free.

Install the Edgio CLI

If you have not already done so, install the Edgio CLI.
1npm i -g @layer0/cli@latest

Getting Started

If you don’t already have a Gatsby application, you can create one using:
1npm install -g gatsby-cli
2gatsby new gatsby-site
You should now have a working Gatsby site. Run gatsby develop to see the application running on localhost:8000.
Configure your project for Edgio by running the following command in your project’s root directory:
10 init
This will automatically add all of the required dependencies and files to your project. These include:
  • The @layer0/core package
  • The @layer0/gatsby package
  • The @layer0/cli package
  • layer0.config.js
  • routes.js - A default routes file that sends all requests to your Gatsby static site. Update this file to add caching or proxy some URLs to a different origin.

Running Locally

You can test the integration of the Sites router with your gatsby site locally using:
10 dev


Deploy your app to the Sites by running the following command in your project’s root directory:
10 deploy
See Deploying guide for more information.


The default routes.js file created by 0 init sends all requests to the Gatsby static site.
1// This file was automatically added by 0 deploy.
2// You should commit this file to source control.
4const { Router } = require('@layer0/core/router')
5const { gatsbyRoutes } = require('@layer0/gatsby')
7module.exports = new Router()
8 // Prevent search engine bot(s) from indexing
9 // Read more on:
10 .noIndexPermalink()
11 .use(gatsbyRoutes)

Adding routes to a different origin

To proxy some URLs to a different origin, you need first to configure that origin in your layer0.config.js file.
For example:
1// layer0.config.js
3module.exports = {
4 backends: {
5 legacy: {
6 domainOrIp: process.env.LEGACY_BACKEND_DOMAIN || '',
7 hostHeader: process.env.LEGACY_BACKEND_HOST_HEADER || '',
8 },
9 },
Using environment variables here allows you to configure different legacy domains for each Edgio environment.
Then you can add routing and caching rules to your routes.js file. Note that gatsbyRoute must be declared last as it acts as a fallback route.
For example:
1// routes.js
3const { Router } = require('@layer0/core/router')
4const { gatsbyRoutes } = require('@layer0/gatsby')
6module.exports = new Router()
7 // Prevent search engine bot(s) from indexing
8 // Read more on:
9 .noIndexPermalink()
10 .get('/some/legacy/url/:p', ({ proxy }) => {
11 proxy('legacy')
12 })
13 .use(gatsbyRoutes)
Check Routing and Caching guides for more information.