File-server + reverse-proxy

1. Caddy version (caddy version): v2.2.1 h1

2. How I run Caddy:

systemd service
Here is caddy process info:
caddy 420 1 0 20:18 ? 00:00:00 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile

a. System environment:

Ubuntu 20.04.1 LTS

b. Command:

/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile

c. Service/unit/compose file:

# caddy.service
# For using Caddy with a config file.
# Make sure the ExecStart and ExecReload commands are correct
# for your installation.
# See for instructions.
# WARNING: This service does not use the --resume flag, so if you
# use the API to make changes, they will be overwritten by the
# Caddyfile next time the service is restarted. If you intend to
# use Caddy's API to configure it, add the --resume flag to the
# `caddy run` command or use the caddy-api.service file instead.


ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile


d. My complete Caddyfile or JSON config:

# The Caddyfile is an easy way to configure your Caddy web server.
# Unless the file starts with a global options block, the first
# uncommented line is always the address of your site.
# To use your own domain name (with automatic HTTPS), first make
# sure your domain's A/AAAA DNS records are properly pointed to
# this machine's public IP, then replace the line below with your
# domain name.

# Set this path to your site's directory.
root * /usr/share/caddy

# Enable the static file server.

# Another common task is to set up a reverse proxy:
# reverse_proxy localhost:8080
route /metabase/* {
        uri strip_prefix /metabase
        reverse_proxy localhost:3000

# Or serve a PHP site through php-fpm:
# php_fastcgi localhost:9000

# Refer to the Caddy docs for more information:

3. The problem I’m having:

4. Error messages and/or full log output:

5. What I already tried:

I am successfully serving up an index.html via https, but also need to proxy access to a metabase system on localhost:3000
I tried the config above but I get 404 when I go to:

6. Links to relevant resources:

That’s because your route only matches requests starting with /metabase/, so will not match. Try requesting instead.

I’d recommend writing your config like this instead: {

	handle_path /metabase* {
		reverse_proxy localhost:3000

	handle {
		root * /usr/share/caddy
1 Like

@francislavoie - that worked - THX so much !!

… and if I want to also proxy to localhost:3306 without affecting file-server on port 443?

Just make another site block for that:


This topic was automatically closed after 30 days. New replies are no longer allowed.