Files
sarlinkportal/.build/prod/nginx.conf
T
2026-08-02 05:09:00 +05:00

50 lines
1.7 KiB
Nginx Configuration File

upstream frontend { server frontend:3000; }
upstream backend { server backend:5000; }
server {
listen 80;
server_name _;
access_log /dev/stdout;
error_log /dev/stderr;
# Matches the frontend's serverActions bodySizeLimit (20mb).
client_max_body_size 20M;
# --- Django admin + its static assets (served by WhiteNoise from gunicorn) ---
location /admin/ {
proxy_pass http://backend;
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;
}
location /static/ {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
# --- Django-uploaded media (written to the shared `media` volume) ---
location /media/ {
alias /app/media/;
access_log off;
}
# --- Next.js app (everything else, including its own /api/* route handlers) ---
# The browser only ever talks to Next.js; Next.js reaches Django server-side
# over the compose network via SARLINK_API_BASE_URL=http://backend:5000.
location / {
proxy_pass http://frontend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
# Honour the X-Accel-Buffering: no header the app sets for streamed responses.
proxy_buffering off;
}
}