Caddy can't stop/restart properly when you disable the admin interface in the config because those subcommands actually make HTTP requests to the admin API endpoint: { admin off } The rc script should only use the caddy command for the config reload and do the normal stop/restart through SIGTERM
Are you using head or quarterly? Head had changes in the past week or two that were designed to do exactly that. The goal is that when the admin API fails, it sends the usual signals based on the pidfile. If the version in head isn't doing that, then I need to go back to the drawing board.
*** This bug has been marked as a duplicate of bug 255106 ***