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

公司的前端开发工程师今天找我,让我给他搞下淘宝的一个开源项目 nginx_concat_module 模块,将该模块添加到线上的nginx上去。

简介

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

部署:

1、准备工具

[[email protected] ~]# yum install gcc gcc-c++ make wget subversion -y
[[email protected] ~]# cd /usr/local/src
[[email protected] src]# wget http://down1.chinaunix.net/distfiles/openssl-0.9.8q.tar.gz
[[email protected] src]# tar zxf openssl-0.9.8q.tar.gz
[[email protected] src]# wget http://nchc.dl.sourceforge.net/project/pcre/pcre/8.32/pcre-8.32.tar.gz
[[email protected] src]# tar zxf pcre-8.32.tar.gz
[[email protected] src]#

2、从淘宝的svn取 nginx_concat_module 的源代码

[[email protected] 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 的类型。

[[email protected] src]# grep javascript nginx_concat_module/ngx_http_concat_module.c
    ngx_string("application/x-javascript"),

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

因此,我们最好在向nginx添加该模块之前,修改nginx_concat_module的源代码文件ngx_http_concat_module.c,将application/x-javascript更改为application/javascript,然后再编译安装即可!

修改后的效果如下:

[[email protected] src]# grep javascript nginx_concat_module/ngx_http_concat_module.c
    ngx_string("application/javascript"),


3、安装部署

[[email protected] src]# wget http://nginx.org/download/nginx-1.6.0.tar.gz
[[email protected] src]# tar zxf nginx-1.6.0.tar.gz
[[email protected] src]# useradd nginx -s /sbin/nologin
[[email protected] src]# cd nginx-1.6.0
[[email protected] 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
[[email protected] nginx-1.6.0]# make
[[email protected] nginx-1.6.0]# make install
[[email protected] nginx-1.6.0]# ln -s /usr/local/nginx-1.6.0 /usr/local/nginx
[[email protected] 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、使用

[[email protected] nginx-1.6.0]# curl http://localhost/b.js 
bbbbbbbbbbbbbbbbbbbbbbbbbbb
[[email protected] nginx-1.6.0]# curl http://localhost/a.js 
aaaaaaaaaaaaaaaaaaaaaaaaaaa
[[email protected] 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

时间: 2024-12-19 21:53:30

阿里巴巴开源项目nginx_concat_module企业部署实例的相关文章

阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)

项目背景 阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了otter这样一个产品. otter第一版本可追溯到04~05年,此次外部开源的版本为第4版,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了otte4. 目前同步规模: 同步数据量6亿 文件同步1.5TB(2000w张图片) 涉及200+个数据库实例之间的

阿里巴巴开源项目: canal 基于mysql数据库binlog的增量订阅&消费

背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增 量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此 开启了一段新纪元.ps. 目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解析 基于日志增量订阅&消费支持的业务: 数据库镜像 数据库实时备份 多级索引 (卖家和买家各自分库索引)

淘宝开源项目TbSchedule的部署和使用

tbschedule项目其实可以分为两部分: schedule管理控制台.负责控制.监控任务执行状态 实际执行job的客户端程序. 在实际使用时,首先要启动zookeeper, 然后部署tbschedule web界面的管理控制台,最后启动实际执行job的客户机器.这里zookeeper并不实际控制任务调度,它只是负责与N台执行job的客户端通讯,协调.管理.监控这些机器的运行信息.实际分配任务的是tbschedule管理控制台,控制台从zookeeper获取job的运行信息. tbSchedu

开源项目CIIP(企业信息管理系统框架).2018.1.0910版更新介绍-上周工作总结

又狂撸了一周的代码.简化了0904版本的多数操作. 上一次更新时,总共需要10步,这次简化成3步.嗯嗯,自我感觉不错. 重要的:在创建项目时,可以选择常用模块啦! 第一步:启动CIIP.Designer 第二步:创建Customer业务对象. 第三步:点击生成按钮.出现登录界面,按下确定按钮. 好了,这就是结果,数据是为了方便理解,我录入的. 另外,还有一步创建子表: 生成看结果:多出了一个Order子表. 打不过我吧,就是这么强大~~~~~ <完> 原文地址:https://www.cnbl

阿里巴巴开源项目

Alibaba Group:Github: https://github.com/alibabaAbout: http://news.alibaba.com/specials/aboutalibaba/aligroup/index.html Alibaba Taobao:Github: https://github.com/taobaoWiki: http://code.taobao.orgSite: http://www.taobao.com Alibaba B2B:Github: https

支持Dubbo生态发展,阿里巴巴启动新的开源项目 Nacos

摘要: 上周六的Aliware技术行上海站Dubbo开发者沙龙上,阿里巴巴高级技术专家郭平(坤宇)宣布了阿里巴巴的一个新开源计划,阿里巴巴计划在7月份开启一个名叫Nacos的新开源项目, 在活动演讲中,坤宇介绍了这个开源项目的初衷,他表示 "将通过Nacos项目将阿里巴巴在建设共享服务体系中使用的服务发现.. 贡献Dubbo生态,阿里Nacos开源计划 在上周六的Aliware技术行上海站Dubbo开发者沙龙上,阿里巴巴高级技术专家郭平(坤宇)宣布了阿里巴巴的一个新开源计划,阿里巴巴计划在7月份

JAVA上百实例源码以及开源项目

简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬.向往!此时此景,笔者只专注Android.Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能.编辑音乐软件的朋友,这款实例会对你有所帮助.Calendar万年历 1个目标文件EJ

2018年阿里巴巴重要开源项目汇总(持续更新中)

摘要: 云栖社区特在2018年年末,将阿里巴巴的一些重要的开源项目进行整理,希望对大家有所帮助. 开源展示了人类共同协作,成果分享的魅力,每一次技术发展都是站在巨人的肩膀上,技术诸多创新和发展往往就是基于开源发展起来的,没有任何一家网络公司可以不使用开源技术,仅靠自身技术而发展起来.阿里巴巴各个团队都是发自内心地将踩过的坑和总结的经验融入到开源项目中,供业界所有人使用,希望帮助他人解决问题. 云栖社区特在2018年年末,将阿里巴巴的一些重要的开源项目进行整理,希望对大家有所帮助.(以下项目排名不

2018年阿里巴巴关于java重要开源项目汇总

1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案.此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务. 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统. 地址:ht