subr
A subdomain router.
Install
npm install -g subr
Usage
subr -h
Usage: subr [dir] [options]
Options:
-p, --port Port(s) to use, comma separated
-k, --key File containing ssl key
-c, --cert File containing ssl cert
-t, --tunnel Tunnel to request
-h, --help Show help [boolean]
Examples:
subr Connects ./* to http://*.localtest.me:<random>
subr sockets Connects ./sockets/* to http://*.localtest.me:<random>
subr -p 80,443 -k <key> -c <cert> Connects ./* to http(s)://*.localtest.me
subr -p 1234 -k <key> -c <cert> Connects ./* to http(s)://*.localtest.me:1234
subr -t bob.tunnelprovider.com Connects ./* to http(s)://*.bob.tunnelprovider.com
Example
The idea is for your http servers to listen on unix domain sockets. Nodejs allows you to do this simply by specifying a filesystem path where you would usually specify a port. The http library will create the unix domain socket for you:
// hello.js 'use strict'; const fs = ;const http = ; const server = http; const path = `./sockets/hello`; server;
mkdir -p socketsnode hello.js &subr sockets -p 8080 &
Then go to http://hello.localtest.me:8080.
Don't forget to cleanup:
$ jobs
[1]- Running node hello.js &
[2]+ Running subr sockets -p 8080 &
$ kill %1 %2
$ rmdir sockets
Static Content
If a directory is encountered instead of a socket, it will be served statically:
mkdir -p socketssubr sockets -p 8080 &mkdir sockets/staticecho 'Hello world!' >sockets/static/index.htmlcurl static.localtest.me:8080# output: Hello world!
API
You can also require subr
instead of using the cli:
npm install --save subr
'use strict'; const fs = ;const subr = ; ;