You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Brian Buller deda2ebfb9 Don't route request that we shouldn't! 7 years ago
.gitignore Committed 7 years ago
LICENSE hello version control 7 years ago Change Hostsplitter-Secret to X-Hostsplitter-Secret. Thanks /u/nowprovision 7 years ago
config.go Committed 7 years ago
hostsplitter.go Don't route request that we shouldn't! 7 years ago
signal_handler.go Committed 7 years ago
site.go hello version control 7 years ago


HostSplitter is an HTTP reverse proxy and load balancer that distributes requests to an arbitrary amount of sites based on the Host header.


I commonly run into an issue developing small golang websites: I want to use the same IP address for many sites that aren't large enough to justify their own server.

Site files

HostSplitter will look for site files by default in "/etc/hostsplitter/". HostSplitter will only read files with the .json extension.

A each site file should look like

	"hostnames": [
	"backends": [
	"secret": "puppies1234"

The "secret" field is passed along with every request to that site in the X-Hostsplitter-Secret header. This is intended to be checked before trusting the passed along IP.

Real IP

The original requester's IP is located in the X-Forwarded-For header.


HostSplitter provides 0 downtime reload functionality via SIGUSR1. E.g

pkill -10 hostsplitter


  • SSL