阿里巴巴開源項目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
下一篇 2016-08-15

相關推薦

  • LInux基本常識和幾個基本命令的用法

    1.默認系統管理員root 1)在Linux中,創建系統的同時,會創建一個超級用戶,對系統擁有絕對權限。 2)每個賬戶的文件都被放在各自的家目錄中,管理員家目錄:/root 3)每個帳號會有一個uid號對應,管理員uid=0   cengOS7之前的版本一般用戶uid從500開始   centOS7之后的版本一般用戶uid從1000開始 …

    Linux干貨 2016-07-23
  • CentOS 7源碼安裝httpd服務

    httpd的簡介     httpd是一個開源軟件,且一般用作web服務器來使用。目前最流行的web服務器軟件叫做httpd,httpd還有一個俗稱叫apache,Apache是一個軟件基金會,httpd也是這個軟件基金會的一個項目。在早期的http server就叫做apache,到了http server 2.0以…

    Linux干貨 2016-08-24
  • vim的基本使用

    前言:     Vim是一個類似于Vi的著名的功能強大、高度可定制的文本編輯器,在Vi的基礎上改進和增加了很多特性。VIM是自由軟件。    Vim普遍被推崇為類Vi編輯器中最好的一個,事實上真正的勁敵來自Emacs的不同變體。1999 年Emacs被選為Linuxworld文本…

    Linux干貨 2017-07-30
  • Linux下chomd修改文件或目錄權限

    文件或目錄權限分為三個字段 以/tmp為例ll后可看到權限為:     drwxrwxrwt 第一d為文件類型 Linux下的文件類型     -:普通文件     d:目錄文件     b:塊設備  &nbs…

    Linux干貨 2016-02-28
  • N28-第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。
    2、取出最后登錄到當前系統的用戶的相關信息。
    3、取出當前系統上被用戶當作其默認shell的最多的那個shell。
    4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。
    5、取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
    6、列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。
    7、顯示/var目錄下一級子目錄或文件的總個數。
    8、取出/etc/group文件中第三個字段數值最小的10個組的名字。
    9、將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。
    10、請總結描述用戶和組管理類命令的使用方法并完成以下練習:
    (1)、創建組distro,其GID為2016;
    (2)、創建用戶mandriva, 其ID號為1005;基本組為distro;
    (3)、創建用戶mageia,其ID號為1100,家目錄為/home/linux;
    (4)、給用戶mageia添加密碼,密碼為mageedu;
    (5)、刪除mandriva,但保留其家目錄;
    (6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;
    (7)、修改slackware的默認shell為/bin/tcsh;
    (8)、為用戶slackware新增附加組admins;

    2017-12-17
欧美性久久久久