2026-08-01 19:56:51 +07:00
|
|
|
server {
|
|
|
|
|
listen 8081;
|
|
|
|
|
server_name _;
|
|
|
|
|
|
|
|
|
|
root /usr/share/nginx/html;
|
|
|
|
|
index index.html;
|
|
|
|
|
|
2026-09-13 10:14:51 +07:00
|
|
|
# Security & isolation headers for iframe embedding inside COEP parent
|
|
|
|
|
add_header Cross-Origin-Resource-Policy "cross-origin" always;
|
|
|
|
|
add_header Cross-Origin-Embedder-Policy "credentialless" always;
|
|
|
|
|
add_header X-Frame-Options "SAMEORIGIN" always;
|
|
|
|
|
|
2026-08-01 19:56:51 +07:00
|
|
|
# SPA fallback — tailscale serve strips the /flowchart/ mount point,
|
|
|
|
|
# so nginx receives /assets/... and / (index.html)
|
|
|
|
|
location / {
|
|
|
|
|
try_files $uri $uri/ /index.html;
|
2026-09-13 10:14:51 +07:00
|
|
|
add_header Cross-Origin-Resource-Policy "cross-origin" always;
|
|
|
|
|
add_header Cross-Origin-Embedder-Policy "credentialless" always;
|
|
|
|
|
add_header X-Frame-Options "SAMEORIGIN" always;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
location ~* \.(js|css|woff|woff2|ttf|eot|wasm|svg|png|jpg)$ {
|
|
|
|
|
expires 1y;
|
|
|
|
|
add_header Cache-Control "public, immutable";
|
|
|
|
|
add_header Cross-Origin-Resource-Policy "cross-origin" always;
|
|
|
|
|
add_header Cross-Origin-Embedder-Policy "credentialless" always;
|
2026-08-01 19:56:51 +07:00
|
|
|
}
|
|
|
|
|
}
|