nginx js/css合并请求(nginx-http-concat-master)模块

nginx-http-concat-master 是淘宝研发的针对 nginx 的文件合并模块,主要用于合并前端代码减少 http 请求数。如果你的应用环境中部署了 nginx,那么可以考虑尝试此模块减少请求数。

那 nginx-http-concat-master 模块中主要包含两个配置参数,concat 和 concat_unique ,concat 则用于开启或关闭请求合并功能,可以应用于http,server,location;而concat_unique 用来配置是否只允许同类型文件(相同MIME文件)合并,应用于http,server,location 区段中。


第三方模块编译安装参数:

这里写图片描述


一、concat

语法:concat on | off
默认:concat off
配置段:http,server,location

主要是用来设置开启或关闭请求合并功能,默认为关闭,如(开启concat功能):

这里写图片描述

注释:
concat_types MIME 默认的类型为:text/css application/x-javascript,当然也可以通过 concat_types MIME types进行设置。


二、concat_unique

语法:concat_unique on | off
默认:concat_unique on
配置段:http,server,location

是否只允许同类型文件(相同MIME文件)合并。例如,设置为off,那么js和css文件可以合并;默认情况下,这个值为on,意味着只有相同的类型的文件才能合并;如果希望js和css能够合并为一个请求,那么你必须设置concat_unique off,其他类型文件也可以用同样的方式合并。如(允许不同类型的MIME文件进行合并):

这里写图片描述


三、concat_max_files

语法:concat_max_files number
默认:concat_max_files 10
配置段:http,server,location

定义一个给定配置段里面允许合并的文件数量,默认最多10个,不过一定要注意,uri不要超过系统规定的page size,在linux里面执行getconf PAGESIZE 可以获取系统的限制,通常限制是4096字节。

这里写图片描述

如配置最大合并文件为20个,则平均每个被合并的文件大小为4096/20,大约200字节每只。

这里写图片描述


四、配置使用示例

concat on;
开启请求文件合并功能

concat_max_files 20;
定义最大文件合并数量为20个

concat_unique off;
允许不同类型的文件进行合并

这里写图片描述

模块地址:https://yunpan.cn/cqSKP6BrJ2AeT 访问密码 4f50

<think>好的,我现在需要帮助用户解决他们遇到的关于Nginx配置RTMP模块的问题。用户之前已经遇到了找不到config文件的错误,现在又执行了一系列的ls命令,但都提示找不到目录或文件。让我仔细看一下用户的问题。 用户首先执行了`ls -l /usr/bin/nginx-rtmp-module-master`,结果提示没有这个文件或目录。这说明用户可能错误地将模块路径指向了/usr/bin下的某个位置,但实际模块并没有安装在那里。通常,第三方模块应该放在源码目录旁边,而不是系统bin目录下。 接着用户尝试了`ls -l /usr/bin/nginx/nginx-rtmp-module-master`,但提示不是一个目录。这可能意味着/usr/bin/nginx本身并不是一个目录,或者用户错误地认为这里存在模块目录。实际上,/usr/bin通常是存放可执行文件的地方,而不是模块源码的位置。 然后用户在当前目录(nginx-1.10.3)下执行了`ls -l nginx-rtmp-module-master`,同样提示找不到。这表明用户可能没有正确下载或放置RTMP模块的源码。结合之前的对话,用户可能没有按照建议正确克隆仓库到正确的位置。 用户之前的问题是关于在配置Nginx时添加模块,但路径错误导致找不到config文件。现在用户可能仍然没有正确解决路径问题,或者在下载模块时出现了问题。用户可能在克隆仓库时目录名称不正确,或者将模块放在了错误的位置。 接下来,我需要确定用户的问题所在,并给出解决方案。可能的原因包括: 1. RTMP模块未正确下载或放置位置错误。 2. 目录名称不匹配,例如用户可能下载了带有-master后缀的目录,但在配置时未正确引用。 3. 用户可能误解了模块应该放置的位置,将其放在了系统目录而不是源码目录附近。 解决方案应该包括: - 指导用户正确克隆模块仓库到Nginx源码目录的父目录。 - 确保目录名称正确,并在配置时使用正确的相对路径。 - 验证模块目录中是否存在必要的config文件。 - 可能需要删除之前错误放置的模块目录,并重新克隆。 此外,用户可能在执行git clone时没有切换到正确的目录,导致模块被下载到错误的位置。需要检查当前工作目录,并确保模块被正确放置。 可能还需要提醒用户关于依赖项的问题,例如OpenSSL开发库是否安装,以及确保Nginx版本与RTMP模块版本的兼容性。 最后,用户可能需要重新运行configure命令,并确保路径正确,然后进行编译和安装。验证模块是否成功添加的方法也需要提及,例如使用nginx -V查看编译参数。</think>--- ### **问题诊断** 你尝试在多个路径下查找 `nginx-rtmp-module-master` 目录(如 `/usr/bin/`、`/usr/bin/nginx/` 和当前目录),但均提示 **`No such file or directory`** 或 **`Not a directory`**。这表明: 1. **模块未正确下载**:根本原因是 `nginx-rtmp-module-master` 目录未正确下载或未放置在Nginx源码同级目录。 2. **路径误解**:试图在系统二进制目录(如 `/usr/bin/`)查找模块,但第三方模块需与Nginx源码同级。 --- ### **分步解决方案** #### **1. 定位模块的正确路径** - **Nginx编译规则**:第三方模块(如 `nginx-rtmp-module`)需放置在 **Nginx源码同级目录**(例如:`/root/nginx-rtmp-module`)。 - **错误操作示例**: ```bash # 错误路径(系统二进制目录,存放可执行文件) /usr/bin/nginx-rtmp-module-master # 错误路径(Nginx安装后目录) /usr/bin/nginx/... ``` --- #### **2. 重新下载并放置模块** **步骤1:进入Nginx源码父目录** 假设你的Nginx源码目录为 `/root/nginx-1.10.3`,则: ```bash cd /root ``` **步骤2:克隆官方仓库** ```bash # 下载官方仓库(自动生成目录名称为 nginx-rtmp-module) git clone https://github.com/arut/nginx-rtmp-module.git # 若需指定目录名为 nginx-rtmp-module-master git clone https://github.com/arut/nginx-rtmp-module.git nginx-rtmp-module-master ``` **步骤3:验证目录结构** ```bash ls -l /root/nginx-rtmp-module-master # 应看到 config 文件和其他源码 ls -l /root/nginx-rtmp-module-master/config ``` --- #### **3. 重新配置Nginx** **确保路径正确**: ```bash # 进入Nginx源码目录 cd /root/nginx-1.10.3 # 使用相对路径附加模块 ./configure --add-module=../nginx-rtmp-module-master ``` --- #### **4. 关键注意事项** - **目录命名一致性**: 若克隆时直接使用 `git clone https://github.com/arut/nginx-rtmp-module.git`,生成的目录名为 `nginx-rtmp-module`(无 `-master` 后缀),此时需调整命令: ```bash ./configure --add-module=../nginx-rtmp-module ``` - **避免压缩包解压问题**: 若从GitHub下载ZIP包解压,目录名可能包含 `-master` 后缀(如 `nginx-rtmp-module-master`),需确保路径与 `--add-module` 参数一致。 --- #### **5. 验证模块加载** 编译安装后执行: ```bash /usr/local/nginx/sbin/nginx -V 2>&1 | grep rtmp # 输出应包含:--add-module=../nginx-rtmp-module-master ``` --- ### **操作流程图解** $$ \text{下载模块Nginx源码同级目录} \rightarrow \text{验证config文件存在} \rightarrow \text{配置时使用正确相对路径} \rightarrow \text{编译安装} $$ --- ### **常见错误排查** 1. **`git clone` 权限问题** ```bash # 若提示权限被拒绝,使用sudo sudo git clone https://github.com/arut/nginx-rtmp-module.git ``` 2. **依赖项缺失** RTMP模块依赖OpenSSL,需提前安装开发包: ```bash # CentOS/RHEL yum install openssl-devel # Ubuntu/Debian apt-get install libssl-dev ``` 3. **历史残留文件干扰** 若之前配置失败,清理旧编译文件: ```bash make clean ./configure [your-parameters] ``` --- ### **总结** 你的问题核心是 **模块未正确下载到Nginx源码同级目录**。通过重新克隆仓库到 `/root/nginx-rtmp-module-master` 并确保 `config` 文件存在,即可解决路径错误。务必保持 `--add-module` 参数中的路径与实际目录名称一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值