untar: NGINX HTTP Untar 模块
安装
您可以在任何基于 RHEL 的发行版中安装此模块,包括但不限于:
- RedHat Enterprise Linux 7, 8, 9 和 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 和 Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-untar
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-untar
通过在 /etc/nginx/nginx.conf 顶部添加以下内容来启用模块:
load_module modules/ngx_http_untar_module.so;
本文档描述了 nginx-module-untar v1.1,于 2022 年 3 月 21 日发布。
此 nginx 模块可以直接从 tar 存档中提供静态文件内容。 灵感来自 nginx-unzip-module。
特性
- 零拷贝:直接从存档文件输出内容(无临时文件)
- 缓存解析的存档文件条目:减少存档扫描搜索时间
- 支持的 tar 项类型:普通文件,长文件名数据
配置示例
location ~ ^/(.+?\.tar)/(.*)$ {
untar_archive "$document_root/$1";
untar_file "$2";
untar;
}
模块指令
untar_archive string
上下文: http, server, location
指定 tar 存档名称。
untar_file string
上下文: http, server, location
指定要从 untar_archive 中提取的文件。
untar
上下文: location
从 untar_archive 中调用 untar_file 的解压。
已知限制
- 仅支持 GET, HEAD 方法
- 不支持存档条目列出
- 基本 tar 格式支持(仅普通文件:不支持符号链接、稀疏等)
GitHub
您可以在 nginx-module-untar 的 GitHub 仓库 中找到此模块的其他配置提示和文档。