nginx中使用nginx-http-concat模块合并静态资源文件

首先了解一下 nginx-http-concat,他是一个淘宝的开源Nginx模块,是一个能把多个CSS和JS合并成一个请求的Nginx模块,对于Web性能优化非常有意义。

Github地址:https://github.com/alibaba/nginx-http-concat,

先看看淘宝用起来是什么样的,访问淘宝网主页,查看源代码可以看到类似的这样的style/script链接

代码如下:

<link rel="stylesheet" href="//g.tbcdn.cn/??tb/global/2.1.6/global-min.css,tb/tb-fp/1.2.3/style-min.css?t=20130912">
<script src="https://g.tbcdn.cn/??kissy/k/1.3.1/seed-min.js,tb/global/2.1.6/global-min.js,tb/tb-fp/1.2.3/core-min.js?t=20130912"></script>

是不是很神奇,只需要一个请求,就可以把需要的CSS/JS文件通过合并的方式把他输出成一个文件(注意,虽然淘宝有min格式的文件,但是这里它仅仅是合并多个文件,而不会自动的对其压缩打包文件)

首先我们先从Git上下载安装它

代码如下:

#下载
$ git clone git://github.com/alibaba/nginx-http-concat.git
 
#移动目录
$ mv nginx-http-concat /usr/local/src/nginx-http-concat

查看原始Nginx版本,这很重要,因为我们需要安装同一个版本来升级数据

代码如下:

#查看版本号以及配置信息(目录/模块)
$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.3.1
TLS SNI support disabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module

根据查询的版本号下载对应版本的nginx,可以到官方下载指定版本:http://nginx.org/download/

我这里使用的是1.3.1

代码如下:

$ wget nginx-1.3.1.tar.gz
$ tar zxvf nginx-1.3.1.tar.gz
$ cd nginx-1.3.1
#根据上面-V的信息 加入concat模块所在路径 (--add-module=/usr/local/src/nginx-http-concat) 进行编译
$ ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=/usr/local/src/nginx-http-concat

make之前备份配置文件,防止意外

代码如下:

$ cp -r /usr/local/nginx/conf /root/nginxconf
#编译安装
$ make && make install

接下来就是配置你的静态服务器conf文件

代码如下:

server {
        listen       80;
        server_name static.dexphp.loc;
        index index.html index.htm;
        root  /mnt/siteroot/static.dexphp.com;
               
        location /static/css/ {
                concat on;
                concat_max_files 20; //最大合并文件数量是20个
        }
 
        location /status {
                stub_status on;
                access_log   off;
        }
 
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js)$ {
                expires      off;
        }
 
        error_log   /mnt/siteroot/wwwlogs/static.dexphp.loc.error.log;
        access_log  /mnt/siteroot/wwwlogs/static.dexphp.loc.access.log;
}

(0)

相关推荐

  • 在网关中使用Nginx配置HTTP透明代理案例

    出于某些需求在网关级架设 HTTP 透明代理,劫持用户 HTTP 请求,转发或直接进行响应. iptables配置 iptables 用于将经过网关的 TCP 80 端口的上行流量转发至网关上的 Nginx 服务. 复制代码 代码如下: sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT \--to-destination 网关IP:端口 Nginx 演示配置 复制代码 代码如下: worker_processe

  • windows下nginxHTTP服务器入门教程初级篇

    一.介绍Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X", 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器. 二.Location语法语法:location [=|~|~*|^~] /uri/ { - } 注: 1.~ 为区分大小写匹配 2.~* 为不区分大小写匹配 3.!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 示例一: location / { } 匹配任何查询,因为所有请求都

  • 全面了解Nginx中的HTTP协议相关模块配置

    要理解 HTTP 模块配置解析的过程,首先需要对 nginx 的配置文件结构做一个了解 nginx 的配置文件是用树状结构组织的,每个 NGX_CORE_MODULE 作为根统领着其下的所有配置项 而如下图所示,HTTP 模块的配置被分成了 main.server.location 三层 整个 nginx 配置解析的过程其实就是这棵树的深度遍历过程 而遍历 HTTP 子树的函数就是下面要介绍的 ngx_http_block 配置文件解析 -- http 配置块 当我们需要使用 http 模块的时

  • Nginx出现The plain HTTP request was sent to HTTPS port问题解决方法

    今天在配置Nginx+SSL的时候出现如题的错误,后来与度娘一番云雨之后找到一个解决方法,挺有用,随手转之. 一般在vhost的配置中会有php解析的一段,如: 复制代码 代码如下: location ~ .*\.(php|php5)?$ {  try_files $uri =404;  fastcgi_pass unix:/tmp/php-cgi.sock;  fastcgi_param HTTPS $https if_not_empty;  fastcgi_index index.php;

  • Nginx中使用gzip_http_version解决CDN只支持http 1.0问题

    网站经过CDN后,看CSS文件的header发现 复制代码 代码如下: Transfer-Encoding: chunked google了许久,发现是CDN的抓取好像只支持http 1.0 而nginx的 gzip_http_version选项默认值为1.1 在nginx的配置文件中增加或修改gzip_http_version参数,为: 复制代码 代码如下: gzip_http_version 1.0 改完重启nginx 再看已经正常. 参考文档:http://wiki.nginx.org/N

  • Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法

    HTTPS简介 HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的.HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议.Https使用的默认端口是443.更多HTTPS原理可以参考阮一峰老师的文章:http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html SSL证书 证书类

  • Nginx实现根据域名http、https分发配置示例

    tomcat端口:8080 做好虚拟主机 nginx端口:80 根据域名分派 在conf/nginx.conf中的http中增加 复制代码 代码如下: include www.jb51.net.conf 新建conf/www.jb51.net.conf,内容如下: 复制代码 代码如下: server { listen 80; server_name www.jb51.net; location / {     proxy_pass http://127.0.0.1:8080;     proxy

  • Linux服务器nginx访问日志里出现大量http 400错误的请求分析

    服务器中的错误记录类似于这种: 124.65.133.242 – – [27/Oct/2014:14:30:51 +0800] "-" 400 0 "-" "-" 124.65.133.242 – – [27/Oct/2014:14:31:45 +0800] "-" 400 0 "-" "-" 124.65.133.242 – – [27/Oct/2014:14:31:45 +0800]

  • nginx/apache/php隐藏http头部版本信息的实现方法

    1.nginx隐藏头部版本信息方法 编辑nginx.conf配置文件,在http{}内增加如下一行 复制代码 代码如下: http {      --      server_tokens off;      --     } 编辑php-fpm配置文件,fastcgi.conf或fcgi.conf 找到: 复制代码 代码如下: fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 改为: 复制代码 代码如下: fastcgi_param SER

  • nginx HTTP模块配置常用指令

    一.HTTP模块的作用是什么? Nginx的HTTP模块用于控制Nginx的HTTP进程. 二.配置指令 1. alias含义:指定location使用的路径,与root类似,但不改变文件的跟路径,仅适用文件系统的路径.语法:alias <file-path | directory-path>缺省:N/A作用域:http.server.location示例: 复制代码 代码如下: location /i/ {    alias /home/michael/web/i/;} 如请求 /i/log

  • 高性能WEB开发 nginx HTTP服务器篇

    第一篇:HTTP服务器 因tomcat处理静态资源的速度比较慢,所以首先想到的就是把所有静态资源(JS,CSS,image,swf) 提到单独的服务器,用更加快速的HTTP服务器,这里选择了nginx了,nginx相比apache,更加轻量级, 配置更加简单,而且nginx不仅仅是高性能的HTTP服务器,还是高性能的反向代理服务器. 目前很多大型网站都使用了nginx,新浪.网易.QQ等都使用了nginx,说明nginx的稳定性和性能还是非常不错的. 1. nginx 安装(linux) htt

随机推荐