rp

command module
v0.0.0-...-975c5c9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 18, 2023 License: MIT Imports: 2 Imported by: 0

README

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

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL