{"id":19281289,"url":"https://github.com/calavera/active-proxy","last_synced_at":"2025-07-30T08:10:23.660Z","repository":{"id":10007740,"uuid":"12043587","full_name":"calavera/active-proxy","owner":"calavera","description":"Dynamic reverse proxy","archived":false,"fork":false,"pushed_at":"2014-03-20T23:56:23.000Z","size":2616,"stargazers_count":137,"open_issues_count":0,"forks_count":15,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-22T01:38:35.950Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/calavera.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-08-11T22:26:37.000Z","updated_at":"2024-11-28T16:27:42.000Z","dependencies_parsed_at":"2022-09-15T20:13:08.073Z","dependency_job_id":null,"html_url":"https://github.com/calavera/active-proxy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/calavera/active-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calavera%2Factive-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calavera%2Factive-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calavera%2Factive-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calavera%2Factive-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/calavera","download_url":"https://codeload.github.com/calavera/active-proxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calavera%2Factive-proxy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266236669,"owners_count":23897222,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T21:22:16.256Z","updated_at":"2025-07-21T04:06:10.085Z","avatar_url":"https://github.com/calavera.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Active-Proxy\n\nActive-Proxy is a dynamic reverse proxy written in Go.\n\nIt uses [etcd](https://github.com/coreos/etcd) to dynamically switch application upstreams without restarting.\n\nThis is just an experiment, so any feature that you could think of is probably missed. Pull requests are really appreciated.\n\n## Dependencies\n\nThis repository includes a vagrant file with a box that already includes the latest stable version of etcd.\n\nUse `vagrant up` to boot the box. The server listens then at localhost:8080.\n\nIt uses [gopack](https://github.com/d2fn/gopack) to install other required dependencies when the project builds.\n\n## Installation\n\nYou can build it running:\n\n```\n$ ./gopack build\n```\n\nOr run it from source using:\n\n```\n$ script/server\n```\n\n## Usage\n\nImagine that you have an applications called `foo` and `bar` that you want to server from the same port.\n`foo` runs on `http://localhost:4000/foo` and `bar` runs on `http://localhost:5000/bar`.\n\nYou can make Active-Proxy to run both on `:8080/foo` and `:8080/bar` registering them in the etcd cluster:\n\n```\n$ curl -L http://127.0.0.1:8080/v1/keys/applications/foo/port -d value=4000\n$ curl -L http://127.0.0.1:8080/v1/keys/applications/bar/port -d value=5000\n```\n\nImagine then that you want to redeploy `foo`. You can boot the new code in a different port, tell Active-Proxy to serve new requests through that port and kill the old application.\nThere are no complicated hotdeploy strategies required and it allows you to test that the application boots correctly before switching ports.\n\nYou only need to register the new port in the etcd cluster and Active-Proxy will do the switch for you without restarting the proxy either:\n\n```\n$ curl -L http://127.0.0.1:8080/v1/keys/applications/foo/port -d value=4004\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalavera%2Factive-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcalavera%2Factive-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalavera%2Factive-proxy/lists"}