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

简介:

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


简介

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


部署:

1、准备工具

1
2
3
4
5
6
7
[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 的源代码

1
[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 的类型。

1
2
[root@tools-ops01-jz src] # grep javascript nginx_concat_module/ngx_http_concat_module.c
     ngx_string( "application/x-javascript" ),


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

wKioL1Rtrt6ANmwkAADvazHATAo157.jpg

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

修改后的效果如下:

1
2
[root@tools-ops01-jz src] # grep javascript nginx_concat_module/ngx_http_concat_module.c
     ngx_string( "application/javascript" ),



3、安装部署

1
2
3
4
5
6
7
8
9
[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之后,我们需要对其进行配置才能够正常使用。配置的参数主要有如下几个:

1
2
3
4
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、使用

1
2
3
4
5
6
7
[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










本文转自 aaao 51CTO博客,原文链接:http://blog.51cto.com/nolinux/1580194,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
Kubernetes 应用服务中间件 nginx
百度搜索:蓝易云【使用Kubernetes部署Nginx应用教程】
现在,你已经成功在Kubernetes集群上部署了Nginx应用。通过访问Service的外部IP地址,你可以访问Nginx服务。
42 4
|
3月前
|
安全 应用服务中间件 nginx
百度搜索:蓝易云【使用Debian、Docker和Nginx部署Web应用教程】
这些是在Debian上使用Docker和Nginx部署Web应用的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
45 0
|
21天前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
85 0
|
3月前
|
应用服务中间件 Linux 网络安全
windows+linux环境下nginx部署环境
windows+linux环境下nginx部署环境
|
6天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
21天前
|
应用服务中间件 nginx Windows
windows下Nginx+RTMP部署
windows下Nginx+RTMP部署
17 0
|
1月前
|
应用服务中间件 Linux nginx
web后端-linux-nginx-1.18操作命令和部署
web后端-linux-nginx-1.18操作命令和部署
|
2月前
|
监控 安全 应用服务中间件
|
3月前
|
应用服务中间件 Linux 网络安全
【Nginx】Nginx Linux 部署
【1月更文挑战第25天】【Nginx】Nginx Linux 部署
|
3月前
|
TensorFlow 算法框架/工具 数据安全/隐私保护
如何在云服务器使用docker快速部署jupyter web服务器(Nginx+docker+jupyter+tensorflow)
如何在云服务器使用docker快速部署jupyter web服务器(Nginx+docker+jupyter+tensorflow)
86 0