84 lines
3.9 KiB
Nginx Configuration File
84 lines
3.9 KiB
Nginx Configuration File
events {}
|
||
|
||
http {
|
||
include /etc/nginx/mime.types;
|
||
default_type application/octet-stream;
|
||
|
||
# ------------------ upstreams (one line to edit per container) ----------
|
||
upstream backend5000 { server server1:5000; } # auth & free
|
||
upstream backend5001 { server server2:5001; } # onet, distance, etc.
|
||
upstream backend5002 { server server3:5002; } # premium
|
||
|
||
# -----------------------------------------------------------------------
|
||
# 1. HTTP → HTTPS redirect
|
||
# -----------------------------------------------------------------------
|
||
server {
|
||
listen 80;
|
||
listen [::]:80;
|
||
server_name dev1.aptivaai.com;
|
||
return 301 https://$host$request_uri;
|
||
}
|
||
|
||
# -----------------------------------------------------------------------
|
||
# 2. Main virtual host on :443
|
||
# -----------------------------------------------------------------------
|
||
server {
|
||
listen 443 ssl http2;
|
||
server_name dev1.aptivaai.com;
|
||
|
||
# ---------- TLS -----------------------------------------------------
|
||
ssl_certificate /etc/letsencrypt/live/dev1.aptivaai.com/fullchain.pem;
|
||
ssl_certificate_key /etc/letsencrypt/live/dev1.aptivaai.com/privkey.pem;
|
||
ssl_protocols TLSv1.2 TLSv1.3;
|
||
|
||
# ---------- React static assets -------------------------------------
|
||
root /usr/share/nginx/html;
|
||
index index.html;
|
||
location / {
|
||
try_files $uri $uri/ /index.html;
|
||
}
|
||
location ~* \.(?:ico|css|js|gif|jpe?g|png|woff2?|eot|ttf|svg)$ {
|
||
expires 6M;
|
||
access_log off;
|
||
}
|
||
|
||
# -------------------------------------------------------------------
|
||
# 3. API reverse‑proxy rules (three prefixes = three back‑ends)
|
||
# -------------------------------------------------------------------
|
||
|
||
## 3A server2 – career, maps, onet, salary, etc.
|
||
## Anything that *starts* with /api/onet/ OR any one of the paths
|
||
## you previously enumerated now lives here.
|
||
location ^~ /api/onet/ { proxy_pass http://backend5001; }
|
||
location ^~ /api/chat/ { proxy_pass http://backend5001; proxy_http_version 1.1; proxy_buffering off; }
|
||
location ^~ /api/job-zones { proxy_pass http://backend5001; }
|
||
location ^~ /api/salary { proxy_pass http://backend5001; }
|
||
location ^~ /api/cip/ { proxy_pass http://backend5001; }
|
||
location ^~ /api/tuition/ { proxy_pass http://backend5001; }
|
||
location ^~ /api/projections/ { proxy_pass http://backend5001; }
|
||
location ^~ /api/skills/ { proxy_pass http://backend5001; }
|
||
location ^~ /api/ai-risk { proxy_pass http://backend5001; }
|
||
location ^~ /api/maps/distance { proxy_pass http://backend5001; }
|
||
location ^~ /api/schools { proxy_pass http://backend5001; }
|
||
|
||
## 3B server3 – premium & public assets handled by server3
|
||
location ^~ /api/premium/ { proxy_pass http://backend5002; }
|
||
location ^~ /api/public/ { proxy_pass http://backend5002; }
|
||
|
||
## 3C server1 – everything else beginning with /api/
|
||
## (register, signin, user‑profile, areas, activate‑premium, …)
|
||
location ^~ /api/ { proxy_pass http://backend5000; }
|
||
|
||
# ---------- shared proxy settings -----------------------------------
|
||
## Add the headers *once*; they apply to every proxy_pass above.
|
||
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;
|
||
|
||
# ---------- error pages ---------------------------------------------
|
||
error_page 502 503 504 /50x.html;
|
||
location = /50x.html { root /usr/share/nginx/html; }
|
||
}
|
||
}
|