Range-requests unsupported in unit
Nginx Unit does not support the Range header and thus does not support range requests. Unit does not intend on ever supporting range requests, hence this webserver is not suited for castopod. The end user problem arising from this is that apple podcasts does not work which does a small range request to check if it accepts the podcast or not (as is already handled in the castopod codebase). Example GET request to `https://podcasts.darmstadt.social/media/podcasts/thinkpadmuseum/1707681819_6bd3cc0b7c33e67952b4.mp3` ```bash $ curl -i -L https://podcasts.darmstadt.social/media/podcasts/thinkpadmuseum/1707681819_6bd3cc0b7c33e67952b4.mp3 -H "Range: 0-1023" HTTP/2 200 access-control-allow-origin: * content-type: audio/mpeg date: Mon, 26 Feb 2024 21:33:20 GMT etag: "65d20d2c-2be6f8d" last-modified: Sun, 18 Feb 2024 13:59:08 GMT referrer-policy: same-origin server: Unit/1.31.1 strict-transport-security: max-age=63072000 x-content-type-options: nosniff x-frame-options: sameorigin content-length: 46034829 ``` The request should return a `206` instead of a `200` and not serve the whole file. HEAD request: ```bash $ curl -I -L https://podcasts.darmstadt.social/media/podcasts/thinkpadmuseum/1707681819_6bd3cc0b7c33e67952b4.mp3 HTTP/2 200 access-control-allow-origin: * content-type: audio/mpeg date: Mon, 26 Feb 2024 21:42:02 GMT etag: "65d20d2c-2be6f8d" last-modified: Sun, 18 Feb 2024 13:59:08 GMT referrer-policy: same-origin server: Unit/1.31.1 strict-transport-security: max-age=63072000 x-content-type-options: nosniff x-frame-options: sameorigin content-length: 46034829 ``` This works perfectly fine for non-docker setups. The requests do not change when done against the localhost:8000 (without further proxying before unit). See upstream issue https://github.com/nginx/unit/issues/1011
issue