room-planner/frontend/nginx.conf
jtricerolph a7cc79a9b1 fix: serve frontend via root + slug subdir, not alias — assets 404/fallback
nginx alias + try_files resolves paths incorrectly (nginx trac #97), so
asset requests fell through to the SPA fallback and index.html was served
as the JS bundle — the app never booted. Match the proven twin-optimiser
pattern: copy dist to html/room-planner and use root with try_files.
Also node:20 → node:22 per stack convention.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-03 16:32:45 +00:00

43 lines
1.2 KiB
Nginx Configuration File

server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
location /room-planner/api/auth/ {
proxy_pass http://10.10.10.101:3001/api/auth/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /room-planner/api/ {
proxy_pass http://backend:3001/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Cache-Control "no-store";
# SSE support
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
}
location /room-planner/health {
proxy_pass http://backend:3001/health;
}
location ~* /room-planner/.*\.(js|css|png|ico|svg|woff2?)$ {
expires 1y;
add_header Cache-Control "public, immutable";
try_files $uri =404;
}
location /room-planner/ {
add_header Cache-Control "no-cache" always;
try_files $uri $uri/ /room-planner/index.html;
}
location = / {
return 301 /room-planner/;
}
}