magic-reverse-proxy
TypeScript icon, indicating that this package has built-in type declarations

2.3.30 • Public • Published

Magic Reverse Proxy

Getting started into Magic Reverse Proxy!

Magic Reverse Proxy is a proxy that can be used to forward requests to another server by domain name, and have a load balancer, ssl/tls support features.

Installation

You must run the following terminal command in same path of your project.

npm install magic-reverse-proxy --save

How it works?

In this basic sample our main goal is to forward all websocket traffic from port 8080 to port 1234.

Creating a basic WebSocket server:

import http from 'http';
import WebSockets from 'websocket';
import { createProxy } from 'magic-reverse-proxy';

const server = http.createServer((req, res) => {
  //Reject useless requests...
  res.writeHead(403).end();
});

server.listen(1234, function () {
  console.log('Destination server is running on port 1234!');
});

const WebSockServer = new WebSockets.server({
  httpServer: server,
  maxReceivedFrameSize: 65536,
  maxReceivedMessageSize: 65536
});

WebSockServer.on('request', (request) => {
  console.log('WebSocket connected over [Client -> localhost:8080 -> localhost:1234]');
  let sock = request.accept();
  sock.on('message', (msg) => {
    //Print in the console the data recepted from client.
    console.log(msg.utf8Data);
  })
});

Creating the Magic Proxy trigger and binding to specific port:

let proxy = createProxy({
  allow_unknown_host: false, //Drop connections from unknown hosts
  allow_websockets: true, //Allow websocket to be proxied as well
  http: {
    port: 8080, //Define HTTP proxy to port 80
    enabled: true, //Enable HTTP proxy
    start_callback: () => {
      console.log('Magic proxy server is running on port 8080!');
    },
    middlewares: [] //Stack of middlewares to be loaded into HTTP server
  },
  proxies: [
    {
      domain: '*', //Proxy all websocket traffic to ws://localhost:1234
      timeout: 10000, //Timeout for connection
      round: 0, //Round-Robin index of destinations to proxy all requests
      destination: ['http://localhost:1234/'], //Array with destinations (Round-Robin will be used to load balance)
      sockDestination: ['ws://localhost:1234'] //Array with websocket destinations (Round-Robin will be used to load balance)
    }
  ],
  default_proxy: {
    timeout: 10000, //Timeout for connection
    round: 0, //Round-Robin index of destinations to proxy all requests
    destination: ['http://localhost:1234/'] //Array with destinations (Round-Robin will be used to load balance)
  }
});

//Bind proxy with specified configurations
proxy.bind();

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
2.3.302latest

Version History

VersionDownloads (Last 7 Days)Published
2.3.302
2.3.290
2.3.280
2.3.270
2.3.260
2.3.250
2.3.240
2.3.230
2.3.220
2.3.210
2.3.200
2.2.200
2.2.190
2.1.190
2.1.180
2.1.170
2.1.160
2.1.150
1.1.150
1.1.140
1.1.130
1.1.120
1.1.100
1.1.90
1.0.80
0.0.80
0.0.70
0.0.60
0.0.50
0.0.40
0.0.30
0.0.20

Package Sidebar

Install

npm i magic-reverse-proxy

Weekly Downloads

2

Version

2.3.30

License

MIT

Unpacked Size

43.3 kB

Total Files

25

Last publish

Collaborators

  • muryllo.pimenta