公司的前端开发工程师今天找我,让我给他搞下淘宝的一个开源项目 nginx_concat_module 模块,将该模块添加到线上的nginx上去。
简介
nginx_concat_module 是淘宝研发的针对 nginx 的文件合并模块,主要用于合并前端代码减少 http 请求数。如果你的应用环境中部署了 nginx,那么可以考虑尝试此模块减少请求数。
部署:
1、准备工具
[root@tools-ops01-jz ~]# yum install gcc gcc-c++ make wget subversion -y [root@tools-ops01-jz ~]# cd /usr/local/src [root@tools-ops01-jz src]# wget http://down1.chinaunix.net/distfiles/openssl-0.9.8q.tar.gz [root@tools-ops01-jz src]# tar zxf openssl-0.9.8q.tar.gz [root@tools-ops01-jz src]# wget http://nchc.dl.sourceforge.net/project/pcre/pcre/8.32/pcre-8.32.tar.gz [root@tools-ops01-jz src]# tar zxf pcre-8.32.tar.gz [root@tools-ops01-jz src]#
2、从淘宝的svn取 nginx_concat_module 的源代码
[root@tools-ops01-jz src]# svn co http://code.taobao.org/svn/nginx_concat_module/trunk/ nginx_concat_module
这里需要注意:
由于Nginx在新版本中,使用了标准的 MIME-Type:application/javascript。而在nginx_concat_module模块目前版本的代码中,写的是 application/x-javascript 的类型。
[root@tools-ops01-jz src]# grep javascript nginx_concat_module/ngx_http_concat_module.cngx_string("application/x-javascript"),
这样子就造成了,你安装该模块之后,对于js文件依旧不能合并,并且会报如下的400错误。
因此,我们最好在向nginx添加该模块之前,修改nginx_concat_module的源代码文件ngx_http_concat_module.c,将application/x-javascript更改为application/javascript,然后再编译安装即可!
修改后的效果如下:
[root@tools-ops01-jz src]# grep javascript nginx_concat_module/ngx_http_concat_module.cngx_string("application/javascript"),
3、安装部署
[root@tools-ops01-jz src]# wget http://nginx.org/download/nginx-1.6.0.tar.gz [root@tools-ops01-jz src]# tar zxf nginx-1.6.0.tar.gz [root@tools-ops01-jz src]# useradd nginx -s /sbin/nologin [root@tools-ops01-jz src]# cd nginx-1.6.0 [root@tools-ops01-jz nginx-1.6.0]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx-1.6.0 --with-http_ssl_module --with-openssl=/usr/local/src/openssl-0.9.8q --with-pcre=/usr/local/src/pcre-8.32 --add-module=/usr/local/src/nginx-concat-master [root@tools-ops01-jz nginx-1.6.0]# make [root@tools-ops01-jz nginx-1.6.0]# make install [root@tools-ops01-jz nginx-1.6.0]# ln -s /usr/local/nginx-1.6.0 /usr/local/nginx [root@tools-ops01-jz nginx-1.6.0]# /usr/local/nginx -s reload
4、配置nginx_concat_module模块参数,使其生效
nginx_concat_module模块添加进nginx之后,我们需要对其进行配置才能够正常使用。配置的参数主要有如下几个:
concat on; # nginx_concat_module主开关 concat_max_files 10; # 最大合并文件数 concat_unique on; # 只允许同类型文件合并 concat_types text/html; # 允许合并的文件类型,多个以逗号分隔。如:application/x-javascript, text/css
在使用中,如果在location 标签下配置就表示对当前的location生效,如果在server下就表示对server标签下的内容生效。需要注意的是,它可能会和你配置的rewrite规则干扰,因此请注意使用范围。
5、使用
[root@tools-ops01-jz nginx-1.6.0]# curl http://localhost/b.js bbbbbbbbbbbbbbbbbbbbbbbbbbb [root@tools-ops01-jz nginx-1.6.0]# curl http://localhost/a.js aaaaaaaaaaaaaaaaaaaaaaaaaaa [root@tools-ops01-jz nginx-1.6.0]# curl http://localhost/??a.js,b.js aaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbb
下面附上一些该模块相关的资料:
淘宝SVN关于该项目的信息:
http://code.taobao.org/p/nginx_concat_module/src/
github关系该项目的信息:
https://github.com/alibaba/nginx-http-concat/issues?q=is%3Aissue+is%3A403
vim /etc/init.d/nginx 粘贴 #!/bin/bash # nginx Startup script for the Nginx HTTP Server # it is v.0.0.2 version. # chkconfig: - 85 15 # description: Nginx is a high-...
1.下载nginx 方法一 wget http://nginx.org/download/nginx-1.11.6.tar.gz 方法二 http://nginx.org/en/download.html在Nginx官网手动下载 2.解压nginx的gz包 tar -zxvf nginx-1.11.6.t...
本文档记录了完全使用最新源码来编译安装nginx最新版1.10.3,所有的依赖也是最新的,便于第三方nginx模块开发 假定使用root身份安装 目前最新的源码地址汇总 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz http:/...
为了自己的ThinkPad T420上面的Ubuntu可以使用openresty开发,我特地记录一下安装过程: 安装依赖包 apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make build-essential 下载源码并...
根据工作需要,现在需要安装nginx服务器,本来可以直接安装别人制作好的rpm包的,但是本着爱折腾和时刻尝鲜的精神,我决定从官网下载最新的nginx源码来安装,下面记录了我的安装过程。 下面的安装假定是以root用户登录并执行 1.安装依赖库 这些依赖库主要有g++、gcc、openssl-devel、pcre-devel和zl...