Caddy for Ghost

If you're trying to serve your Ghost blog with Caddy, the configuration is pretty simple, but you must add the X-Forwarded-Proto header upstream for the https redirection to work :

myghostblog.com {
    reverse_proxy localhost:3000 {
        header_up X-Forwarded-Proto {scheme}
    }
}

Note that you don't need any file_server directive since everything is served by Express in the end, even the static files.

Addendum: X-Frame-Options

If you want to be able to render your site in the "View site" panel of the administration, you must make sure that iframe embedding is allowed at least for SELF (in case you have deactivated it):

header {
    X-Frame-Options SELF
}

🎉