Skip to content

GitbookIO/proxies-on-cloudflare

This branch is 1 commit ahead of master.

Folders and files

NameName
Last commit message
Last commit date
Dec 3, 2022
Aug 18, 2021
Jan 7, 2019
Jan 7, 2019
Aug 18, 2021
Apr 17, 2019
Aug 18, 2021
Aug 18, 2021
Aug 18, 2021
Sep 23, 2019
Jan 7, 2019
Aug 18, 2021

Repository files navigation

proxies-on-cloudflare

Makes it easy to build Cloudflare Workers, by providing high-level proxying primitives addressing common needs.

Installation

$ yarn add proxies-on-cloudflare

Features

  • Built-in proxies for
    • Firebase (Hosting & CloudFunctions)
    • Mixpanel
  • Simple routing via quoi (providing a familiar express-like API)
  • One-liner proxies (e.g: proxy.to('https://upstream.com/'))
  • Loadbalancing (roundrobin, random, iphash, ...)
  • Fallback and error handling

Example

import { quoi, firebase, proxy }  from 'proxies-on-cloudflare';
import { hosting as hostingConfig } from './firebase.json';

// Init firebase proxy
const fbase = new firebase('gitbook-staging', hostingConfig);

// Route and listen
const app = quoi();
app.domain('app.gitbook.com').serve(fbase);
app.domain('test.gitbook.com').serve(proxy.to('https://test.github.io/test/'));
app.domain('storage.gitbook.com').serve(proxy.roundrobin(['https://server1', /* ... */ ]));
app.listen();

You can see a more complex (real-world) example in _examples/gitbook/

Why ?

We originally (GitBook) built proxies-on-cloudflare (previously named firebase-on-cloudflare) to fix connection issues we had between Cloudflare and Fastly/Firebase Hosting but have now extended it to solve broad routing needs.