A simple yet extensible python wrapper script for templating a proxy nginx
configuration
that functions as host mapped reverse proxy container.
Modern browsers enforce CORS policy and won't let you make requests
from your frontend running on localhost:8080
to your backend at
localhost:4000
. To solve this problem, start a proxy at localhost:5000
(or any other spare port) and proxy requests based on paths:
localhost:5000/api
andlocalhost:5000/buy
will be routed to the backendlocalhost:4000
localhost:5000/
will be routed to the frontendlocalhost:8080
pip install proxybootstrap # using pip
Note: You will need docker
for running the proxy container
Start the proxy server with your configuration
proxybootstrap \
--port 5000 \
/api@http://127.0.0.1:4000 /buy@http://127.0.0.1:4000 /@http://127.0.0.1:8080
Option | Description | Default |
---|---|---|
locations |
service locations to proxy. | None |
-c / -config |
nginx config template file |
./config/default.conf |
--port |
listening port for the reverse proxy | 5000 |
--verbose |
enable verbose output | False |
--sync |
force synchronous communication with the proxy | False |
--tag |
docker tag for the reverse proxy container | dev/cors-reverse-proxy |
--dockerfile |
dockerfile for building the container | ./Dockerfile |
Under the hood, configuration options are applied to the --config
template
file and rendered using jinja2
. If you wish, you can pass additional arguments and use
them in the config template.
Example:
proxybootstrap \
-my_var1 Test1 \
--my_var2 Test2 \
--port 5000 \
/@http://127.0.0.1:8080
can be accessed in a template with
{{ my_var1 }}
{{ my_var2 }}
- Write a custom proxy configuration for
nginx
or other proxy servers liketrafik
,envoy
orhaproxy
- When using webpack or another popular tool there might be some plugins like devserver-proxy for vuejs
- Mess around with headers to allow specific CORS requests
If you do not have pipx
and pipenv
, install with
python3 -m pip install --user pipx
python3 -m pipx ensurepath
pipx install pipenv
Install all dependencies with
pipenv install --dev
To format, sort imports and check PEP8 conformity, run
pipenv run black .
pipenv run isort
pipenv run flake8
(These are also configured as a git pre commit hook)
This configuration is very minimal and intended for development use only.