MINEFLAPPY-GAME/nginx.conf
Dave bc72c5dc30 Fullscreen PWA: no border, installs as an app, works offline
- canvas fills the entire screen on any device; the 480x640 world is
  scaled to fit and bottom-aligned so the ground always sits on the
  bottom edge, with the sky painted full-bleed behind it
- the canvas buffer now always matches its laid-out size, so the drawing
  can never drift out of step with the screen
- HUD (score, badge, buffs, toasts, biome banner) moved to screen space
  so it stays pinned to the real screen edges
- sun and stars drawn in screen space so the sky above the play area is
  not empty
- PWA: manifest, service worker (offline), generated app icons and an
  in-game INSTALL APP button
- overlays now dim the whole screen, not just the game strip
2026-10-23 19:52:18 +02:00

57 lines
1.6 KiB
Nginx Configuration File

server {
listen 80;
listen [::]:80;
# Coolify's default app port - serve the game there too so the proxy
# can route to 80 or 3000 and the site works either way
listen 3000;
listen [::]:3000;
server_name _;
root /usr/share/nginx/html;
index index.html;
server_tokens off;
charset utf-8;
# The game is one file - never cache it, so a redeploy shows up at once
location = /index.html {
add_header Cache-Control "no-cache, no-store, must-revalidate" always;
try_files $uri =404;
}
# the service worker must always be revalidated or updates never land
location = /sw.js {
add_header Cache-Control "no-cache, no-store, must-revalidate" always;
add_header Service-Worker-Allowed "/" always;
try_files $uri =404;
}
# the web app manifest needs its own content type
location = /manifest.webmanifest {
default_type application/manifest+json;
add_header Cache-Control "public, max-age=604800" always;
try_files $uri =404;
}
# icons can be cached hard - they only change with a version bump
location ~* \.png$ {
add_header Cache-Control "public, max-age=604800" always;
try_files $uri =404;
}
location = /healthz {
access_log off;
default_type text/plain;
return 200 "ok\n";
}
location / {
try_files $uri $uri/ =404;
}
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_comp_level 5;
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
}