Reverse Proxy with File Server

1. Output of caddy version:

v2.6.2 h1:wKoFIxpmOJLGl3QXoo6PNbYvGW4xLEgo32GPBEjWL8o=

2. How I run Caddy:

Caddy is run by a systemd service as user caddy

a. System environment:

Oracle Linux 8, systemd used

b. Command:

systemctl start/stop/restart caddy

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 --force


d. My complete Caddy config: {
	encode gzip
	log {
		output file /var/log/caddy/pootle/access.log
	file_server /assets/* {
		root /home/opc/dev/pootle/env/lib/python2.7/site-packages/pootle/assets
	reverse_proxy localhost:9999

3. The problem I’m having:

4. Error messages and/or full log output:

Opening the site in a web browser doesn't load the assets folder correctly because they are static files

5. What I already tried:

I already tried to add root to all the pootle directory and specifying only the assets for the file server

6. Links to relevant resources:

Directives are sorted according to the directive order.

I’d recommend writing your config with handle blocks to do this instead: {
	encode gzip
	log {
		output file /var/log/caddy/pootle/access.log

	handle_path /assets/* {
		root * /home/opc/dev/pootle/env/lib/python2.7/site-packages/pootle/assets
		file_server browse

	handle {
		reverse_proxy localhost:9999

There, I suggest using handle_path (which strips the matched path prefix) because otherwise the path would be appended to the root which would cause there to be a /assets/assets doubled up path segment which would cause files to not be found.

Are you sure you need browse? You should only enable that if you want requests to a directory to show an index page which lists the files in the directory. If you only have static assets, you probably don’t want browse.

Also, I don’t recommend serving files from /home, because you can run into file permission issues. I recommend moving your files to /srv or /var/www/html and serving them from there.

1 Like

Thanks for the help!
Now I get a permission error for the entire folder so the file is found, that should be a easy fix!

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