Платформа: alt-server p11 x86_64 (Обновленный до Sisyphus) Пакет: nginx 1.28.0-alt2 Шаги: Установить пакеты # apt-get install nginx nginx-zip Включить модуль # ln -sv /etc/nginx/modules-available.d/http_zip.conf /etc/nginx/modules-enabled.d/ Создать конфиг с содержимым (пример) # cat <<'EOF' > /etc/nginx/sites-available.d/test-zip.conf server { listen 8080; server_name localhost; root /var/www/zip-test; location = /test.zip { default_type application/octet-stream; add_header X-Archive-Files "zip"; zip on; return 200 "Hello from nginx\n"; } } EOF Создать линк # ln -sv /etc/nginx/sites-available.d/test-zip.conf /etc/nginx/sites-enabled.d Выполнить проверку # nginx -t Результат: nginx: [emerg] unknown directive "zip" in /etc/nginx/sites-enabled.d/zip-test.conf:6 nginx: configuration file /etc/nginx/nginx.conf test failed Либо создаю некорректный конфиг, либо это нерабочий модуль. Но конфиги пробовал разные. Либо возвращается просто в тексте (не в архиве), либо ошибка.
zip on лишнее - модуль активируется по add_header X-Archive-Files "zip";
location = /test.zip { default_type application/zip; add_header X-Archive-Files "zip"; ...... }
Исправление конфига не помогло # nginx -t nginx: [emerg] unknown directive "zip" in /etc/nginx/sites-enabled.d/test-zip.conf:8 nginx: configuration file /etc/nginx/nginx.conf test failed #nginx -V 2>&1 | grep -o http_zip_module модуль отсутствует
Так покажите неработающий конфиг
Вот три варианта которые я пробовал: Первый рабочий но возвращает простой файл test.zip (не архив) # cat <<'EOF' > /etc/nginx/sites-available.d/test-zip.conf server { listen 8080; server_name localhost; location = /test.zip { default_type application/zip; add_header X-Archive-Files "zip"; zip_files /var/www/zip-test/hello.txt /dev/null; echo "Hello from nginx" > /var/www/zip-test/hello.txt } Остальные возвращают ошибку: # cat <<'EOF' > /etc/nginx/sites-available.d/test-zip.conf server { listen 8080; server_name localhost; location = /test.zip { default_type application/zip; add_header Content-Disposition 'attachment; filename="test.zip"'; zip_entry "hello.txt" { content_type text/plain; content "Hello from nginx\n"; } } } # cat <<'EOF' > /etc/nginx/sites-available.d/test-zip.conf server { listen 8080; server_name localhost; root /var/www/zip-test; location = /test.zip { default_type application/zip; add_header X-Archive-Files "zip"; zip on; zip_localtime off; zip_files /var/www/zip-test/hello.txt /dev/null; } } EOF
ln -sv /etc/nginx/modules-available.d/http_zip.conf /etc/nginx/modules-enabled.d/ - сделано ?
(Ответ для Alexey Belsky на комментарий #3) > #nginx -V 2>&1 | grep -o http_zip_module > модуль отсутствует грепать надо add-dynamic-module=nginx-zip-module у меня отображается.
Создать тестовые файлы: mkdir -p /var/www/test-zip echo "Hello from file1" > /var/www/test-zip/file1.txt echo "Hello from file2" > /var/www/test-zip/file2.txt Создать список файлов для архива (/var/www/test-zip/filelist.txt): - 17 /files/file1.txt file1.txt - 17 /files/file2.txt file2.txt (- вместо CRC32 означает что контрольная сумма неизвестна) Конфигурация nginx: # Бэкенд — отдаёт файлы и список с заголовком server { listen 127.0.0.1:8091; root /var/www/test-zip; location = /filelist.txt { add_header X-Archive-Files zip; } } # Фронтенд с mod_zip server { listen 127.0.0.1:8090; location /archive { proxy_pass http://127.0.0.1:8091/filelist.txt; } location /files/ { internal; proxy_pass http://127.0.0.1:8091/; } } 4. Проверка nginx -t && nginx -s reload curl -o /tmp/test.zip http://127.0.0.1:8090/archive file /tmp/test.zip unzip -l /tmp/test.zip Результат: /tmp/test.zip: Zip archive data Archive: /tmp/test.zip Length Date Time Name --------- ---------- ----- ---- 17 2026-02-27 12:23 file1.txt 17 2026-02-27 12:23 file2.txt --------- ------- 34 2 files