server { listen 80; server_name _; root /usr/share/nginx/html; index index.html; # /e/ -> page upload invité, le slug est lu côté client via # window.location.pathname (cf. src/e/upload.js) location /e/ { try_files $uri $uri/ /e/index.html; } # /admin/?token=... -> galerie admin, slug lu côté client. # /admin/qrcode/ reste servi tel quel (fichier réel, try_files le trouve # avant de tomber sur le fallback ci-dessous). location /admin/ { try_files $uri $uri/ /admin/gallery/index.html; } location /vendor/ { try_files $uri =404; } location = / { return 302 /e/; } }