Porter is a small Go program (~100 lines of code) that proxies HTTPS (port 443) connections to a target destination, and redirects HTTP (port 80) requests to the same HTTPS address. It is intended to be deployed alongside a balancer like Fabio; this allows the balancer to run on a single and non-privileged port (Fabio's default is 9999), reducing the surface area of code needing to run with privileged access.
Basic DNS forwarding functionality is also supported. By default, all HTTP traffic is redirected to the same HTTPS address, but this can be overridden for a specific domain to redirect HTTP requests to any address. This allows the same node to be used for load balancing and DNS forwarding.