You don’t need a “3rd Flask project” to route between the two apps – that’s exactly what a **reverse proxy** like **nginx** is for.
The standard production pattern is:
- Each Flask app runs on its **own internal port** (localhost-only).
- **nginx** listens on the single public HTTP port.
- nginx uses `location` blocks to forward `/url1/...` to app1 and `/url2/...` to app2.
---
## 1. Run your Flask apps on different internal ports
Example:
# App 1
FLASK_APP=main.py flask run --host=127.0.0.1 --port=5001
# App 2
FLASK_APP=main.py flask run --host=127.0.0.1 --port=5002
And then nginx:
server {
listen 80;
server_name your.server.ip; # or domain
# Route /url1/... to Flask app 1
location /url1/ {
proxy_pass http://127.0.0.1:5001/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Route /url2/... to Flask app 2
location /url2/ {
proxy_pass http://127.0.0.1:5002/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}