server { listen 80; server_name pna.nursingcitizendevelopment.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name pna.nursingcitizendevelopment.com; ssl_certificate /etc/letsencrypt/live/pna.nursingcitizendevelopment.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/pna.nursingcitizendevelopment.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; # ── Stripe webhook endpoint ────────────────────────────────────────────── location /webhook { proxy_pass http://pna-webhook:8080/webhook; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_read_timeout 30s; } # ── Streamlit WebSocket SSE stream ─────────────────────────────────────── location /_stcore/stream { proxy_pass http://pna-assistant:8501/_stcore/stream; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400s; } # ── Streamlit app (everything else) ───────────────────────────────────── location / { proxy_pass http://pna-assistant:8501; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_cache_bypass $http_upgrade; proxy_read_timeout 300s; } }