{"id":17156909,"url":"https://github.com/dynom/proxima","last_synced_at":"2025-04-13T13:22:45.633Z","repository":{"id":64307092,"uuid":"89175228","full_name":"Dynom/proxima","owner":"Dynom","description":"A small reverse proxy for Imaginary, to harden public facing services.","archived":false,"fork":false,"pushed_at":"2018-05-25T12:27:50.000Z","size":23,"stargazers_count":4,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-04T14:51:29.145Z","etag":null,"topics":["imaginary","microservice","reverse-proxy"],"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/Dynom.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":"2017-04-23T22:00:54.000Z","updated_at":"2020-09-20T22:08:23.000Z","dependencies_parsed_at":"2023-01-15T11:00:16.093Z","dependency_job_id":null,"html_url":"https://github.com/Dynom/proxima","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dynom%2Fproxima","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dynom%2Fproxima/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dynom%2Fproxima/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dynom%2Fproxima/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dynom","download_url":"https://codeload.github.com/Dynom/proxima/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248718306,"owners_count":21150555,"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":["imaginary","microservice","reverse-proxy"],"created_at":"2024-10-14T22:07:43.454Z","updated_at":"2025-04-13T13:22:45.606Z","avatar_url":"https://github.com/Dynom.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Introduction\nProxima is a small reverse-proxy intended to guard the popular [Imaginary](https://github.com/h2non/imaginary) service. It's intended as a public facing frontend for Imaginary.\n\n\n```\n$ ./proxima -h\nUsage of ./proxima:\n  -allow-hosts value\n        Repeatable flag (or a comma-separated list) for hosts to allow for the URL parameter (e.g. \"d2dktr6aauwgqs.cloudfront.net\")\n  -allowed-actions value\n        A comma seperated list of actions allows to be sent upstream. If empty, everything is allowed.\n  -allowed-params value\n        A comma seperated list of parameters allows to be sent upstream. If empty, everything is allowed.\n  -bucket-rate float\n        Rate limiter bucket fill rate (req/s) (default 20)\n  -bucket-size int\n        Rate limiter bucket size (burst capacity) (default 500)\n  -imaginary-url string\n        URL to imaginary (default: http://localhost:9000) (default \"http://localhost:9000\")\n  -listen-port int\n        Port to listen on (default 8080)\n  -root-path-strip string\n        A section of the (left most) path to strip (e.g.: \"/static\"). Start with a /.\n```\n\n\n# Example\nStart imaginary on a local interface\n```bash\n./imaginary -a 127.0.0.1 -p 9001 -enable-url-source\n```\n\nStart Proxima on the public interface\n```bash\n./proxima \\\n    --allowed-actions=\"info,crop\" \\\n    --imaginary-url=\"http://127.0.0.1:9001\" \\\n    --listen-port=9000\n```\n\nAnd visit http://localhost:9000/ as if it were Imaginary, e.g.:\n```bash\ncurl \\\n    --data-binary @pancake.jpg \\\n    \"http://localhost:9000/info\" | jq .\n\n{\n  \"width\": 1400,\n  \"height\": 919,\n  \"type\": \"jpeg\",\n  \"space\": \"srgb\",\n  \"hasAlpha\": false,\n  \"hasProfile\": false,\n  \"channels\": 3,\n  \"orientation\": 0\n}\n```\n\nAnd since we only defined the `info` and `crop` actions, *enlarge* is not allowed:\n```bash\ncurl --data-binary @pancake.jpg \\\n    \"http://localhost:9000/enlarge?width=10000\u0026height=10000\"\n\nUnregisterd action\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdynom%2Fproxima","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdynom%2Fproxima","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdynom%2Fproxima/lists"}