Streaming ZIP Archives On the Fly With nginx + mod_zip: No Disk, No Buffers, No Problem - podcast episode cover

Streaming ZIP Archives On the Fly With nginx + mod_zip: No Disk, No Buffers, No Problem

Jun 01, 202614 min
--:--
--:--
Download Metacast podcast app
Listen to this episode in Metacast mobile app
Don't just listen to podcasts. Learn from them with transcripts, summaries, and chapters for every episode. Skim, search, and bookmark insights. Learn more

Episode description

This story was originally published on HackerNoon at: https://hackernoon.com/streaming-zip-archives-on-the-fly-with-nginx-mod_zip-no-disk-no-buffers-no-problem.
How we stream ZIP archives on the fly at scale using nginx + mod_zip — no disk writes, no buffering, with local and remote files in a single archive.
Check more stories related to programming at: https://hackernoon.com/c/programming. You can also check exclusive content about #nginx, #zip, #php, #architecture, #performance, #file-handling, #backend, #hackernoon-top-story, and more.

This story was written by: @dmitriistarikov. Learn more about this writer by checking @dmitriistarikov's about page, and for more stories, please visit hackernoon.com.

Instead of downloading files to disk, computing checksums, and building a ZIP before serving it, we use nginx + mod_zip to stream archives directly to the client. PHP returns a short manifest listing file URLs and sizes — nginx fetches each file via internal subrequests and pumps them into a ZIP stream in real time. No temp files, no buffering, no waiting. The main gotcha: file sizes are required upfront (ZIP format constraint), which is trivial for local files and requires a HEAD request for remote ones. We hit a production incident caused by zero sizes in metadata from an external team — silent broken archives, hard to debug because mod_zip subrequests don't surface in normal log pipelines.

For the best experience, listen in Metacast app for iOS or Android