Traefik has been my go-to reverse proxy for quite a while now. The main advantages is its docker/k8s and native ACME support. You can configure services, config, routes, etc. via docker labels. When running under compose, this makes it very clean and convenient to maintain config. It also has plenty of useful middlewares and has a prometheus exporter for its internal stats.