mazehall-proxy

0.3.2 • Public • Published

Mazehall Proxy

SECURITY HINT: never ever use the proxy in production WITHOUT a firewall restriction to the websocket registration port - default 3300.

Description

Mazehall-proxy is a dynamic reverse proxy.

  • written in coffee-script -> javascript
  • on top of redbird proxy -> http-proxy
  • websocket ready
  • dynamic registration over websockets
  • dynamic unregistration on disconnect
  • connectivity check on registration
  • multi hosts and multi backends ready
  • Environment variables for docker friendly usage
    var Proxy = require('mazehall-proxy');
    Proxy.Server({port: 80});

Installation

npm install --save mazehall-proxy

Usage

All configuration options of redbird are covered.

Reference

MazehallProxy.Server(opts)

This is the Proxy constructor. Creates a new Proxy and starts listening to the given ports. Default proxy: 8080, ws-server: 3300

Arguments

    opts {Object} Options to pass to the proxy:
    {
     port: {Number} // port number that the proxy will listen to. default 8080
     mazehall: { // Optional mazehall-proxy settings
         port: {Number} // Optional websocket server will listen to. default 3300
         ns: namespace // Optional websocket namespace - default "/proxy"
     }
     ssl: { // Optional SSL proxying.
     port: {Number} // SSL port the proxy will listen to.
     // Default certificates
     key: keyPath,  
     cert: certPath,
     ca: caPath // Optional.
            redirect: true, // Disable HTTPS autoredirect to this route.
     }
        bunyan: {Object} // Bunyan options. (DEFAULT: false) If you want to enable bunyan, just set this option.
    }

Check bunyan for info. Keep in mind that having logs enabled incours in a performance penalty of about one order of magnitude per request.

Environmet variables

MAZEHALL_PROXY_PORT

  • the proxy port to listen on for incoming proxy requests (default: 8080)

MAZEHALL_SOCKET_NS

  • namespace to be used for the websocket registration connection (default: /proxy)

MAZEHALL_SOCKET_PORT

  • websocket server port (default: 3300)

MazehallProxy.Client(server, hosts)

This is the Client constructor. Creates a new Proxy-Client and starts listening to the server start event. If triggered then it starts a websocket client and registers the public addresses and server port.

Arguments

server - {Object} a http instance

hosts - {String|Array} Hosts url

Example

process.env.MAZEHALL_PROXY_MASTER = "ws://" + config.proxy.ws.master + ":" + config.proxy.ws.port + "/proxy"
var proxy = MhProxy.Client(server, config.proxy.hosts);

Environmet variables

MAZEHALL_PROXY_MASTER

  • websocket connection string default: ws://localhost:3300/proxy

Roadmap

  • add security methods to the registration process
  • fix websockets in balancing scenarios

Package Sidebar

Install

npm i mazehall-proxy

Weekly Downloads

0

Version

0.3.2

License

MIT

Last publish

Collaborators

  • jensklose