How to do request header validation in Caddy v2?

It’s because respond comes before reverse_proxy in the default directive order:

You can do one of these things:

  • Wrap your directives in a route { } block:
route {
	reverse_proxy @apirequests localhost:5000
	respond "No soup for you!"
}
  • Wrap each directive in a handle { } block:

handle @apirequests {
	reverse_proxy localhost:5000
}
handle {
	respond "No soup for you!"
}

(Actually you could just wrap the reverse_proxy in handle, since handle comes before respond already.)

  • Or use this global option:
{
    order reverse_proxy before respond
}

so that the reverse_proxy is evaluated first.

(In hindsight, I probably could have put respond more toward the end of the default ordering, but it is useful sometimes as in some cases you want the reverse_proxy to be the “else”, and anyway, it’s too late to change it now.)

See also:

1 Like