项目作者: monkeydioude

项目描述 :
Capybara, simple reverse-proxy (api gateway) for localhost services
高级语言: Go
项目地址: git://github.com/monkeydioude/capybara.git
创建时间: 2018-04-23T19:13:41Z
项目社区:https://github.com/monkeydioude/capybara

开源协议:

下载


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

  1. {
  2. "proxy": {
  3. "port": 80
  4. },
  5. "services": [
  6. {
  7. "id": "duck",
  8. "pattern": "^/kwak/",
  9. "port": 9090
  10. },
  11. {
  12. "id": "stoned",
  13. "method": "string",
  14. "pattern": "/jesus",
  15. "port": 9091
  16. }
  17. ]
  18. }

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 ?