server { listen 443 ssl; listen [::]:443 ssl; server_name {{ zot_domain }}; ssl_certificate /etc/letsencrypt/live/{{ zot_domain }}/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/{{ zot_domain }}/privkey.pem; # Large blob/layer uploads for container images and OCI artifacts. client_max_body_size 0; location / { proxy_pass http://127.0.0.1:{{ zot_port }}; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Ensure a well-formed Content-Length reaches Zot instead of # chunked transfer encoding, which Zot rejects on blob uploads. proxy_request_buffering on; } } server { listen 80; listen [::]:80; server_name {{ zot_domain }}; location /.well-known/acme-challenge/ { root /var/www/letsencrypt; } location / { return 301 https://$host$request_uri; } }