# Soapbox Nginx for Docker. server { listen ${PORT}; keepalive_timeout 70; sendfile on; client_max_body_size 80m; root /usr/share/nginx/html; gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml image/x-icon; add_header Strict-Transport-Security "max-age=31536000" always; # SPA. # Try static files, then fall back to index.html. location / { try_files $uri /index.html; } # Build files. # New builds produce hashed filenames, so these should be cached heavily. location /packs { add_header Cache-Control "public, max-age=31536000, immutable"; add_header Strict-Transport-Security "max-age=31536000" always; } # Return 404 on API routes so Soapbox knows what to do. location /api { add_header Content-Type "application/json"; return 404 '{"error": "Not implemented"}'; } # ServiceWorker: don't cache. location = /sw.js { add_header Cache-Control "public, max-age=0"; add_header Strict-Transport-Security "max-age=31536000" always; } }