阿里巴巴开源项目nginx_concat_module企业部署实例

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1580194

       公司的前端开发工程师今天找我,让我给他搞下淘宝的一个开源项目 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.c
    ngx_string("application/x-javascript"),

这样子就造成了,你安装该模块之后,对于js文件依旧不能合并,并且会报如下的400错误。

1.jpg

因此,我们最好在向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.c
    ngx_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

       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

转自:http://nolinux.blog.51cto.com/4824967/1580194

原创文章,作者:s19930811,如若转载,请注明出处:http://www.178linux.com/1934

(0)
s19930811s19930811
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • Bash Shell中的for循环和运算表达式应用

    Bash Shell中的for循环和运算表达式应用 1、写一个脚本 实现以下功能: 接受一个以上文件路径作为参数, 显示每个文件拥有的行数,总结说明本次共为几个文件统计了其行数。设定此脚本至少需要一个参数并给出提示,$#表示参数的个数。将脚本提供的所有参数组成一个列表放入for语句依次进行循环执行echo "$i has $(wc -l $i | …

    Linux干货 2016-12-13
  • 网络基础总结

    这周南老师出差了,由王老师给我们代课,这周我们主要学习了网络基础,相比着之前,主要是理论加理解。下面我总结一下。 处于21世纪的我们,互联网时代,网络在我们身边的各个角落,覆盖了我们的衣食住行,带来 很多方便;首先什么是网络, 家庭办公室,移动用户,总部,分支机构。。。都在用互联网相连着,省去了许多麻烦,时间,加快了办公效率; 资源共享的功能和优点:数据和应…

    2017-09-02
  • HAProxy初探及简单案例_Net21_第二周

    前言 随着互联网业务的迅猛发展,大型电商平台和门户网站对系统的可用性和可靠性的要求越来越高,高可用集群、负载均衡集群成为一种热门的系统架构解决方案。在众多的负载均衡解决方案中,有基于硬件的负载均衡设备,例如F5、Big-IP等,也有基于软件的负载均衡产品,如LVS、Nginx以及本文介绍的HAProxy等。在软件的负载均衡产品中,又分为两种实现方式,分别是基…

    Linux干货 2016-07-22
  • shell编程及小命令

    1. ping 10.1.252.25d2 -c1 -w1 &> /dev/null && echo "The host is up" || echo "The host is down" 2. 在vim命令中, p或则P可以实现复制。     p: 复制到下一行 &n…

    Linux干货 2016-08-12
  • php-fpm实验

    #yum install marisdb-server #vim /etc/my.cnf.d/server.cnf [mysqld]         skip_name_resolve=ON         innodb_file_per_…

    Linux干货 2017-06-08
  • Linux发展史

    简 述 Linux是一套自由加开放源代码的类Unix操作系统,诞生于1991年10月5日(第一次正式向外公布),由芬兰学生Linus Torvalds和后来陆续加入的众多爱好者共同开发完成。 Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议,可支持32位和64位硬件。…

    2016-10-14