{"id":18665037,"url":"https://github.com/lindell/revaboxy","last_synced_at":"2025-07-31T17:09:48.184Z","repository":{"id":57597247,"uuid":"182817508","full_name":"lindell/revaboxy","owner":"lindell","description":"Reverse proxy for A/B testing frontend applications","archived":false,"fork":false,"pushed_at":"2020-08-17T15:49:12.000Z","size":41,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-11T23:38:40.940Z","etag":null,"topics":["ab-testing","docker-image","go","golang","reverse-proxy","routing"],"latest_commit_sha":null,"homepage":"","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/lindell.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-22T15:38:18.000Z","updated_at":"2024-08-07T01:51:45.000Z","dependencies_parsed_at":"2022-08-24T21:41:27.810Z","dependency_job_id":null,"html_url":"https://github.com/lindell/revaboxy","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/lindell/revaboxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lindell%2Frevaboxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lindell%2Frevaboxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lindell%2Frevaboxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lindell%2Frevaboxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lindell","download_url":"https://codeload.github.com/lindell/revaboxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lindell%2Frevaboxy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268075053,"owners_count":24191655,"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","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ab-testing","docker-image","go","golang","reverse-proxy","routing"],"created_at":"2024-11-07T08:26:00.739Z","updated_at":"2025-07-31T17:09:48.159Z","avatar_url":"https://github.com/lindell.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"http://share.lindell.me/revaboxy/revaboxy.png\" alt=\"Revabboxy logo\" width=\"500\" /\u003e\n\n[![GoDoc](https://godoc.org/github.com/lindell/revaboxy/pkg/revaboxy?status.svg)](https://godoc.org/github.com/lindell/revaboxy/pkg/revaboxy)\n[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/lindell/revaboxy/Go)](https://github.com/lindell/revaboxy/actions?query=workflow%3AGo)\n[![Docker Image Size](https://img.shields.io/docker/image-size/lindell/revaboxy/latest)](https://hub.docker.com/r/lindell/revaboxy)\n[![Docker Pulls](https://img.shields.io/docker/pulls/lindell/revaboxy)](https://hub.docker.com/r/lindell/revaboxy)\n[![Go Report Card](https://goreportcard.com/badge/github.com/lindell/revaboxy)](https://goreportcard.com/report/github.com/lindell/revaboxy)\n[![Coverage Status](https://coveralls.io/repos/github/lindell/revaboxy/badge.svg?branch=master)](https://coveralls.io/github/lindell/revaboxy?branch=master)\n\u003c/div\u003e\n\nOverview\n----\nRevaboxy is a reverse proxy made for A/B testing of front end applications.\nIt is placed in front of two or more versions of a frontend and does randomize the trafic to the different versions based on probability.\nWhen a users browser makes subsequent requests, revaboxy will automaticly select the same version as before.\n\n\nRevaboxy is released as [docker images](https://hub.docker.com/r/lindell/revaboxy/tags), [binaries for linux/windows/mac](https://github.com/lindell/revaboxy/releases) and as a [Go library](https://godoc.org/github.com/lindell/revaboxy/pkg/revaboxy).\n\nEnvironment Variables\n----\n\n#### Configuring the versions\nWhen setting up Revaboxy, every version has to be setup with the url and probability that it will be selected.\nThese environment variables are called `VERSION_NAME_URL` and `VERSION_NAME_PROBABILITY`.\n\nAs an example, say we have two version, one called `DEFAULT` and one called `GREEN_BACKGROUND`. The environment variables needed would be:\n\n```bash\nVERSION_DEFAULT_URL=http://defaulturl\nVERSION_DEFAULT_PROBABILITY=0.6\nVERSION_GREEN_BACKGROUND_URL=http://greenbackgroundurl\nVERSION_GREEN_BACKGROUND_PROBABILITY=0.4\n```\n\n#### Setting to change the behavior of revaboxy\n| Name            | Default         | Description                                                                               |\n| --------------- | --------------- | ----------------------------------------------------------------------------------------- |\n| `HOST`          | ` `             | The host that the server should listen to, the default value makes it listen on all hosts |\n| `PORT`          | `80`            | The port that server should listen on                                                     |\n| `HEADER_NAME`   | `Revaboxy‑Name` | The header name sent to the downsteam application                                         |\n| `COOKIE_NAME`   | `revaboxy‑name` | The cookie name that is set at the client to keep track of which version was selected     |\n| `COOKIE_EXPIRY` | `7d`            | The time before the cookie containing the a/b test version expires                        |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flindell%2Frevaboxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flindell%2Frevaboxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flindell%2Frevaboxy/lists"}