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
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
Powered by Cloudflare
Cloudflare offers DDoS protection, a global CDN, SSL certificates, and a lot more cool stuff for free. You should probably use it.
REQUIRED Network Policies
Services that Portzilla proxies must be open to incoming network requests. You might need to adjust your network policy to ensure each proxied port is accepting traffic. Refer to your network policy documentation to learn how to open ports on your platform.
If you open a port on your Cloudflare-enabled site, your service won't automatically respond on
http://www.yoursite.com:<PORT>. Portzilla does this for you.
To test your service, install Portzilla and set up a route to the port its listening on. If you get an Error Page when your visit the Route URL, you probably need to tweak your network policy.
Portzilla is easy to set up once you get your ports open! 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:
REQUIRED Route Name
You should name your route something to remember it by. The following is another informative table.
|docs to vuepress server||🎉|
Don't put any sensitive information in
Route Name. You should find a better place to put that.
REQUIRED Route URL
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.
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
REQUIRED Target Port
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
25 for obvious reasons.
Port 22 and 25 are used by the SSH and SMTP protocols, respectively.
OPTIONAL Target Resources
If you're proxying to a static page or framework like a React site or Ghost blog, you'll definitely want to read this section.
For example, let's say you want to show off your brand new create-react-app project to the world. Find its Resources in the Network tab of your browser's DevTools.
You'll notice that
localhost:3000 serves a few Resources under the
/static directory, a
favicon.ico and a
manifest.json. These Resources need to be whitelisted because we want to proxy
localhost:3000 with Portzilla.
Target Resources: www.yoursite.com/static www.yoursite.com/favicon.ico www.yoursite.com/manifest.json
Notice that full URL's like
www.yoursite.com/static are required here. Portzilla won't work if you only specify
The above configuration tells Portzilla to forward requests for
manifest.json and any files in
/static and any subdirectory of
Notice the potential for collisions here, but rest assured that Portzilla minimizes them. If you have more than one route that contains
/static Resources, Portzilla will try to fetch requested resources from each one. This will normally ensure the Resource is retrieved. However, you'll need to create unique names for common files like
favicon.ico because there is no way to avoid a collision between the favicons of the proxied and main pages.
If you visit your proxied page and get 500 errors or notice it looking funny, you probably need to whitelist more Resources.
OPTIONAL Custom Headers
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
OPTIONAL Custom Error Page
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.
Portzilla will render it's default Error Page unless you specify your own template in
Custom Error Page.
The Error Page will appear after the number of seconds configured in
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
OPTIONAL Use HTTP
If traffic to
Route URL is using
https, the proxied request will also use
https. Enable this to use
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.
If your service takes a while to spin up or is otherwise slow, increase
If you want to temporarily disable Portzilla and all your routes, this is your option.
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 failed request.
Fetch Timeout is set very high so the request will complete.