Simple reverse proxy to proxy requests based on the first path segment to the correct service in order to substitute services partially in local development.
git clone https://github.com/akullpp/groxy.git
Create a .env.local
of the following form:
FOO=http://localhost:1000
BAR=http://localhost:2000
-
Requests which paths start with
FOO
(e.g.foo/baz
) will be forwarded tohttp://localhost:1000
(e.ghttp://localhost:1000/foo/baz
). -
Requests which paths start with
BAR
(e.g.bar/baz
) will be forwarded tohttp://localhost:2000
(e.ghttp://localhost:2000/bar/baz
). -
Requests which first path segment do not match will be forwarded to the DEFAULT value in
.env
(e.g.http://localhost:8080
).
You also have the ability to drop the path prefix, by adding <PREFIX>_DROP_PREFIX=true
, e.g.
FOO=http://localhost:1000
BAR=http://localhost:2000
BAR_DROP_PREFIX=true
This will forward requests of localhost:9999/bar/baz
to localhost:2000/baz
.
go run ./main.go
I suggest to use reflex in order to restart the server if the .env.local
changes:
reflex -r '\.env\.local' -s -- sh -c 'go run ./main.go'
If you want to route requests that start with user
to http://localhost:8100
:
USER=http://localhost:8100
I extracted the reading of the reading of environment files to another package (see gotenv) which only uses the standard library.