Socket
Socket
Sign inDemoInstall

magic-reverse-proxy

Package Overview
Dependencies
68
Maintainers
1
Versions
33
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    magic-reverse-proxy

A web proxy based with some smart features like VHOSTS, HSTS, websockets support and Round-Robin balancer algorithm.


Version published
Maintainers
1
Created

Readme

Source

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();

Keywords

FAQs

Last updated on 04 Oct 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc