Мне нужно было легкое решение, с гибким и простым конфигом и с возможностью выдавать и автоматически обновлять сертификаты Lets Encrypt.
И я его нашел — Reproxy. Написан на Go, умеет все выше перечисленное, а также имеет плотную интеграцию с Docker.
Пример моей конфигурации для запуска в Docker, но для проксирования на другой сервер.
Конфигурация docker-compose.yml:
services:
reproxy:
image: umputun/reproxy:master
ports:
- "80:8080"
- "443:8443"
volumes:
- ".docker/configs/reproxy/reproxy.yml:/srv/reproxy.yml"
- ".docker/configs/reproxy/ssl:/srv/var/ssl"
environment:
- TZ=UTC
- FILE_ENABLED=true
- DOCKER_ENABLED=false
- SSL_TYPE=auto
- SSL_ACME_EMAIL=a@repin.pw
- SSL_ACME_LOCATION=/srv/var/ssl
- KEEP_HOST=true
Конфигурация самого reproxy:
git.repin.pw:
- { route: "(.*)", dest: "http://127.0.0.1/$1" }
Ключ конфига — домен, который видит reproxy и автоматически регистрирует сертификаты. При этом он сам периодически проверяет и применяет изменения на лету.

