Home
Softono

Rp

Open source MIT Go
24
Stars
6
Forks
1
Issues
2
Watchers
2 years
Last Commit

 About Rp

Reverse-proxy with Weighted Round Robin (WRR) load-balancer

Platforms

Web Self-hosted

Languages

Go

Links

Need Help Installing Rp?

We provide expert installation service for this software. Our team will install, configure, and secure Rp on your server. plans start at just $30.

RP

Reverse Proxy with Weighted Round Robin balancer.

A reverse proxy server is an intermediate connection point positioned at a network’s edge. It receives initial HTTP connection requests, acting like the actual endpoint.

Image credit: What is Reverse Proxy

Installation

$ go get -u github.com/ahmdrz/rp

CommandLine

Running reverse proxy without balancer:

$ rp --config rpconfig.yaml --verbose serve

Example of configuration file

listenaddr: 0.0.0.0:8080

# you can change domain name servers using
dnslist: ["8.8.8.8", "4.2.2.4"]

targets:
- address: http://api.server1.com
  weight: 3
- address: http://api.server2.com
  weight: 2

Generate default configuration file

$ rp --config rpconfig.yaml generate

API

package main

import (
  "log"
  "net/url"
  
  rp "github.com/ahmdrz/rp/reverse-proxy"
)

func newURL(addr string) *url.URL {
	u, err := url.Parse(addr)
	if err != nil {
		log.Fatal(err)
	}
	return u
}

func main() {
  proxy := rp.New()
  proxy.Log(true)
  
  // Add will append a new endpoint to rp
  // Round-Robin only works if you add more than 1 endpoint
  // weights must be positive and greater than 0
  proxy.Add(newURL("https://api.server1.com"), 1)

  // You can also change DNS if you want using
  proxy.ChangeDNS("8.8.8.8"...)
	
  proxy.ListenAndServe("0.0.0.0:8080")
}

Using Docker

FROM ahmdrz/rp:latest
COPY rpconfig.yaml .
EXPOSE 8080
CMD ["rp", "--verbose", "serve"]

Todo

  • Better CLI Application
  • Failover Solution
  • Health Check