I had an issue on Directadmin server where client had nodejs application for which apache had to proxy on port 3001. Becouse of this, letsencrypt was not able to reach .well-known/acme-challenge/ and certificate registration/renewal failed. Solution is simple, you have to exclude proxy when requesting .well-known/acme-challenge/.
This was error whent trying to check .well-known/acme-challenge:
$ curl http://mydomain.com/.well-known/acme-challenge/test.txt
{"errors":[{"message":"Route /.well-known/test.txt doesn't exist.","extensions":{"code":"ROUTE_NOT_FOUND"}}]}%
So I added “ProxyPass !” directive just before where I create proxy directive to port 3001. Like so:
. . .
<Location /.well-known/acme-challenge>
ProxyPass !
</Location>
<Location />
Require all granted
ProxyPass http://127.0.0.1:3000/
ProxyPassReverse http://127.0.0.1:3000/
</Location>
. . .
Then I was able tu make request to .well-known/acme-challenge sucsessfully:
> $ curl http://mydomain.com/.well-known/acme-challenge/test.txt
It works!
I hope this helps! 🙂