Skip to content

Capybara, simple reverse-proxy (api gateway) for localhost services

Notifications You must be signed in to change notification settings

monkeydioude/capybara

Repository files navigation

CAPYBARAS ARE LOVE

Build Status

Simple Reverse-Proxy written in go.

Listen to a port and redirect any url matching a pattern to another port.

I made this as a solution for hosting multiple services on the same "url" without relying on having a port straight in the URL. Some companies/organizations block any request to a url using a port as one of their security measures.

First parameter must be the path to your config json file

Example of config.json

{
    "proxy": {
        "port": 80
    },
    "services": [
        {
            "id": "duck",
            "pattern": "^/kwak/",
            "port": 9090
        },
        {
            "id": "stoned",
            "method": "string",
            "pattern": "/jesus",
            "port": 9091
        }
    ]    
}

Entries in "services" by id:

  • "duck" will redirect any request caught on port 80, starting with "/kwak" to the port 9090 using a regex as matching (default) method.
  • "stoned" will redirect any request caught on port 80, starting with "/jesus" to the port 9091 using a string as matching method. This method compare the string with the beginning of the URI. It does not try to find the string inside the URI.

/ ! \ On Linux (did not try on other system), capybara must be run with sudo if chosen proxy port is under 1024. It will fail otherwise.

This project still needs:

  • Tests
  • Refacto (so it can be more easily tested)
  • Allow config refresh through config file
  • More methods of matching besides "string" and "regex"
  • Refacto "RemovePattern" behavior to a "RedirectPath" behavior

This project might need:

  • Redirect HTTPS ?
  • Better logging ?

About

Capybara, simple reverse-proxy (api gateway) for localhost services

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages