https reverse proxy with automatic Letsencrypt usage for multiple hostnames/backends
Go
101
14 commits
updated Jul 15, 2026
Command leproxy implements https reverse proxy with automatic Letsencrypt usage for multiple hostnames/backends
Install:
go install github.com/artyom/leproxy@latest
Run:
leproxy -addr :https -map /path/to/mapping.txt -cacheDir /path/to/letsencrypt
mapping.txt contains host-to-backend mapping, where backend can be specified as:
Example:
subdomain1.example.com: 127.0.0.1:8080
subdomain2.example.com: /var/run/http.socket
subdomain3.example.com: @abstractUnixSocket
uploads.example.com: https://uploads-bucket.s3.amazonaws.com
# this is a comment, it can only start on a new line
static.example.com: /var/www/
Note that when @name backend is specified, connection to abstract unix socket
is made in a manner compatible with some other implementations like uWSGI, that
calculate addrlen including trailing zero byte despite documentation not
requiring that. It won't
work with other implementations that calculate addrlen differently (i.e. by
taking into account only strlen(addr) like Go, or even UNIX_PATH_MAX).
14 commits
Go
100.0%
https reverse proxy with automatic Letsencrypt usage for multiple hostnames/backends
Go
101
14 commits
updated Jul 15, 2026
Command leproxy implements https reverse proxy with automatic Letsencrypt usage for multiple hostnames/backends
Install:
go install github.com/artyom/leproxy@latest
Run:
leproxy -addr :https -map /path/to/mapping.txt -cacheDir /path/to/letsencrypt
mapping.txt contains host-to-backend mapping, where backend can be specified as:
Example:
subdomain1.example.com: 127.0.0.1:8080
subdomain2.example.com: /var/run/http.socket
subdomain3.example.com: @abstractUnixSocket
uploads.example.com: https://uploads-bucket.s3.amazonaws.com
# this is a comment, it can only start on a new line
static.example.com: /var/www/
Note that when @name backend is specified, connection to abstract unix socket
is made in a manner compatible with some other implementations like uWSGI, that
calculate addrlen including trailing zero byte despite documentation not
requiring that. It won't
work with other implementations that calculate addrlen differently (i.e. by
taking into account only strlen(addr) like Go, or even UNIX_PATH_MAX).
14 commits
Go
100.0%