Reverse Proxy doesn't works

1. The problem I’m having:

I have a python app running on port 5000, and Caddy running on port 80. I’m trying to make a reverse proxy, but when I call it shows me the index.html page from the projeto_html folder, and not the page from the python app running on port 5000.

2. Error messages and/or full log output:

No error message. Only, the app running on port 5000 doesn’t shows.

3. Caddy version:

v2.7.6 h1:w0NymbG2m9PcvKWsrXO6EEkY9Ru4FJK8uQbYcev1p3A=

4. How I installed and ran Caddy:

Binary file

a. System environment:

Debian Linux 11

b. Command:

sudo caddy run --config Caddyfile

d. My complete Caddy config:

:80 {

	root * /home/paulo/projeto_html
	file_server {

     reverse_proxy /soc/*	

	try_files {path} index.html


There’s two problems here.

First, try_files has a higher directive order than reverse_proxy, so it always runs first and rewrites the request because the file doesn’t exist on disk.

Second, your matcher is /soc/*, which doesn’t match /soc.

You should use handle to make it mutually exclusive:

:80 {
	handle /soc* {

	handle {
		root * /home/paulo/projecto_html
		try_files {path} /index.html
		file_server browse

If you plan on running your server long-term, don’t run caddy run directly, run Caddy as a service (and move your files to /srv since the service won’t have access to /home):

1 Like

Hi, really works now!!!

But I needed to make a replace inside, because the “/soc” was being passed to python app, calling But with replace, it worked.

handle /soc* {
    uri replace /soc /

thank you very much!!!

Use handle_path instead, and it does the stripping for you. You can remove uri replace.

Use `handle_path` instead, and it does the stripping for you. You can remove `uri replace` 

Really!! Thanks again!!!

1 Like