# nginx config file used by docker server { listen 80; listen [::]:80; client_max_body_size 5M; client_body_buffer_size 1M; root /var/www/; server_name decomp.local www.decomp.local; location / { try_files $uri @proxy_frontend; } location ~ ^/api(/.*)?$ { try_files $uri @proxy_api; } location /admin { try_files $uri @proxy_api; } location /static { try_files $uri @proxy_api; } location /media { root /; } location @proxy_api { proxy_intercept_errors on; error_page 502 503 504 =200 @backend_down; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Url-Scheme $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://backend:8000; } location @proxy_frontend { proxy_intercept_errors on; error_page 502 503 504 =200 /down.html; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Url-Scheme $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://frontend:8080; } location /_next/webpack-hmr { proxy_intercept_errors on; error_page 502 503 504 =200 /down.html; proxy_pass http://frontend:8080/_next/webpack-hmr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } # Avoid returning HTML from the /api endpoint if backend is unavailable location @backend_down { add_header X-Backend-Down true always; default_type application/json; return 200 '{}'; } }