Portzilla

The Skinny

Proxy traffic from any URL on your domain to a service listening on another port. You can even send custom headers along with each request.

Say your hosting your docs on a server listening on port 4080, Portzilla can proxy traffic from docs.yoursite.com or www.yoursite.com/docs to your server.

curl https://www.yoursite.com/docs → https://yoursite.com:4080

You would normally need NGINX or something for this, but you can just use Portzilla now.

How to Install

Portzilla is powered by Cloudflare. If you're already using Cloudflare, click here to install Portzilla.

TIP

Cloudflare offers DDoS protection, a global CDN, SSL certificates, and a lot more cool stuff for free. You should probably use it.

Configuration

Portzilla is really easy to use. The instructions on the installation page are fairly self explanatory, but we'll go into a little more detail here.

The following Route Configuration is available for each route Portzilla should handle.

These Advanced Options are also available:

Route Configuration

Route URL
REQUIRED

Traffic to this URL will be proxied to Target Port below. This can be any URL on your domain and can include subdomains. It is important that a full URL is specified here. Portzilla won't like it if you supply a path like /store here. It requires a URL like yoursite.com/store to work right. Here's some more examples in an informative table.

Route URL Result
/sad/path 😔
yoursite.com/cool-beans 🎉
blog.yoursite.com 🎉

Portzilla will automatically proxy all requests to any subfolders of Route URL. In the table above, traffic to blog.yoursite.com/topics will also go to Target Port.

Target Port
REQUIRED

All traffic from Route URL and any of its subfolders will be proxied to the service running on this port. Portzilla respects your rights as a sovereign internet citizen and allows any Target Port, but you probably shouldn't use ports like 22 and 25 for obvious reasons.

OBVIOUS REASONS

Port 22 and 25 are used by the SSH and SMTP protocols, respectively.

Route Name
OPTIONAL

You should name your route something to remember it by. The following is another informative table.

Route Name Result
muh route 😔
docs to vuepress server 🎉
😔
swagger ui 🎉

Naming your routes is encouraged but not required.

WARNING

Don't put any sensitive information in Route Name. You should find a better place to put that.

Custom Headers
OPTIONAL

You can specify any number of headers to pass along with requests sent to the service running on Target Port. Each header should be new-line separated. In other words, hit enter after each header you type. Here's what custom headers might look like in your Portzilla configuration.

X-Forwarded-From: blog
Some-Other-Header: hey lol
athirdheader: you get the point

Custom Error Page
OPTIONAL

An HTML template to show if your service on Target Port is unresponsive. If you don't add a template, Portzilla will use its default error page.

TIP

Enable Advanced Options > Debug Mode to display Portzilla's Debug Page instead. This is useful if you're having trouble connecting to your service on Target Port.

Use HTTP
OPTIONAL

If traffic to Route URL is using https, the proxied request will also use https. Enable this to use http instead.

Advanced Options

Debug Mode

This is useful if you're having trouble connecting to your service on Target Port. When Debug Mode is active, the Portzilla Debug Page will appear after a few seconds if your service is unresponsive.

TIP

If your service takes a while to spin up or is otherwise slow, increase Advanced Options > Fetch Timeout`.

Fetch Timeout

This is the number of seconds Portzilla will wait for a response from the service listening on Target Port before giving up and rendering the Error Page. The default value is 5 seconds.

TIP

Portzilla will render a default Error Page unless you specify your own template in Custom Error Page.