Add versioned HTTP gateway routing by business domain
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# Include this file inside the nginx http {} block.
|
||||
# Replace server_name and certificate paths before deployment.
|
||||
# All domains currently run in one modular FastAPI process.
|
||||
upstream adcloud_events { server 127.0.0.1:8000; }
|
||||
upstream adcloud_users { server 127.0.0.1:8000; }
|
||||
upstream adcloud_ads { server 127.0.0.1:8000; }
|
||||
upstream adcloud_identity { server 127.0.0.1:8000; }
|
||||
upstream adcloud_api { server 127.0.0.1:8000; }
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
server_name api.adcloud.example;
|
||||
|
||||
ssl_certificate /etc/nginx/tls/adcloud/fullchain.pem;
|
||||
ssl_certificate_key /etc/nginx/tls/adcloud/privkey.pem;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
|
||||
client_max_body_size 1m;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
# This gateway is the public edge: overwrite untrusted forwarded headers.
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Connection "";
|
||||
proxy_connect_timeout 5s;
|
||||
proxy_read_timeout 30s;
|
||||
proxy_send_timeout 30s;
|
||||
|
||||
# No URI suffix on proxy_pass: preserve /v1/... and query strings.
|
||||
location ^~ /v1/events/ { proxy_pass http://adcloud_events; }
|
||||
location ^~ /v1/users/ { proxy_pass http://adcloud_users; }
|
||||
location ^~ /v1/ads/ { proxy_pass http://adcloud_ads; }
|
||||
location ^~ /v1/identity/ { proxy_pass http://adcloud_identity; }
|
||||
# Future domains are handled by the versioned FastAPI router.
|
||||
location /v1/ { proxy_pass http://adcloud_api; }
|
||||
location = /health { proxy_pass http://adcloud_api; }
|
||||
location / { return 404; }
|
||||
}
|
||||
Reference in New Issue
Block a user