| Summary: | Не работает модуль nginx-zip nginx: [emerg] unknown directive "zip" | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | obidinog <obidinog> |
| Component: | nginx | Assignee: | Anton Farygin <rider> |
| Status: | CLOSED WORKSFORME | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P5 | CC: | belskijaa, placeholder, rider |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
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
|
Платформа: 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 Либо создаю некорректный конфиг, либо это нерабочий модуль. Но конфиги пробовал разные. Либо возвращается просто в тексте (не в архиве), либо ошибка.