阿里巴巴開源項目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.www58058.com/1934

(0)
s19930811s19930811
上一篇 2016-08-15 12:12
下一篇 2016-08-15 14:31

相關推薦

  • 干貨 | 20 行 Python 代碼創建可視化地圖

    當我開始建造Vincent時, 我的一個目的就是使得地圖的建造盡可能合理化. 有一些很棒的python地圖庫-參見Basemap?和?Kartograph能讓地圖更有意思. 我強烈推薦這兩個工具, 因為他們都很好用而且很強大. 我想有更簡單一些的工具,能依靠Vega的力量并且允許簡單的語法點到geoJSON文件,詳細描述一個投影和大小/比列,最后輸出地圖. …

    2017-09-08
  • N26第一周作業

    第一周作業   1. 描述計算機的組成及其功能。   計算機主要由處理器(CPU)、存儲器、輸入設備、輸出設備。 CPU由運算器、控制器、寄存器、緩存器組成,提供運算。 存儲器即內存,RAM(Random Access Memory),內存為cpu運算時提供數據存儲。 Input:用戶下指令的設備,使計算機能夠與用戶進行交互。 Outpu…

    Linux干貨 2017-01-03
  • tomcat優化

    安裝過程就不多說了,本次主要說明我在實際工作中的一些優化。    1,修改tomcat的運行模式,常見的有 bio,nio, apr三種    我選擇的apr模式,這種對tomcat的性能有較大提高. a:可以根據壓力測試工具來進行測試觀察。(其實我沒對修改apr模式后壓測,我直接問百度的) b:重新啟動tomcat后…

    Linux干貨 2016-06-28
  • N25第五周 grep 和find 命令使用示例

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行;    [root@localhost grub]# grep "^[[:space:]]\+.*" grub.conf    root (hd0,0)…

    Linux干貨 2016-12-25
  • [轉]百萬級訪問網站前期的技術準備

       [轉]百萬級訪問網站前期的技術準備 開了自己域名的博客,第一篇就得來個重磅一點的才對得起這4美金的域名。作為一個技術從業者十年,逛了十年發現有些知識東一榔頭西一棒槌的得滿世界  看個遍才整理出個頭緒,那咱就系統點的從頭一步一步的說,一個從日幾千訪問的小小網站,到日訪問一兩百萬的小網站,怎么才能讓它平滑的度過這個階段,別在 …

    Linux干貨 2016-10-29
  • Redis基于Sentinel哨兵高可用方案

    下載最新redis版本,當前最新版本為  2.8.19  2014-12-30 安裝redis 首頁地址:http://redis.io/ 最新穩定版下載地址: http://download.redis.io/releases/redis-2.8.19.tar.gz # tar -xvf redis-2.8.19.tar.gz # cd…

    2015-03-03
欧美性久久久久