gzip_static on; gzip on; gzip_min_length 50000; gzip_proxied expired no-cache no-store private auth; gzip_types application/atom+xml application/geo+json application/javascript application/x-javascript application/json application/ld+json application/manifest+json application/rdf+xml application/rss+xml application/vnd.ms-fontobject application/wasm application/x-web-app-manifest+json application/xhtml+xml application/xml font/eot font/otf font/ttf image/bmp image/svg+xml text/cache-manifest text/calendar text/css text/javascript text/markdown text/plain text/xml text/x-component text/x-cross-domain-policy; upstream model { # Update to the cost model endpoint # Example: host.docker.internal:9003; server ${API_SERVER}:${API_PORT}; } server { server_name _; root /var/www; index index.html; large_client_header_buffers 4 32k; add_header Cache-Control "must-revalidate"; error_page 504 /custom_504.html; location = /custom_504.html { internal; } add_header Cache-Control "max-age=300"; location / { root /var/www; index index.html index.htm; try_files $uri /index.html; } add_header ETag "1.96.0"; listen ${UI_PORT}; listen [::]:${UI_PORT}; resolver 127.0.0.1 valid=5s; location /healthz { access_log /dev/null; return 200 'OK'; } location /model/ { proxy_connect_timeout 180; proxy_send_timeout 180; proxy_read_timeout 180; proxy_pass http://model/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }