server { listen 80; listen [::]:80 ipv6only=on; server_name localhost; client_max_body_size 128M; # serve media files location /media { alias /opt/recipes/mediafiles; add_header Content-Disposition 'attachment; filename="$args"'; } # serve service worker under main path location = /service-worker.js { alias /opt/recipes/staticfiles/vue3/service-worker.js; } # pass requests for dynamic content to gunicorn location / { proxy_set_header Host $http_host; proxy_pass http://localhost:8080; error_page 502 /errors/http502.html; } location /errors/ { alias /etc/nginx/conf.d/errorpages/; internal; } }