`
haoningabc
  • 浏览: 1482152 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转“nginx 预压缩(gzip)静态文件”

阅读更多
http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" "$content_type"';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    gzip_static on;

    gzip  on;
    gzip_min_length 10;
    gzip_buffers    4 8k;
    gzip_comp_level 9;
    gzip_types      text/plain application/x-javascript text/css application/xml;
    upstream newshooserver {
        server 192.168.106.81:80;
    }
    server {
        listen       8091;
        server_name  192.168.106.81;
        index index.jsp;
        location / {
            proxy_pass http://newshooserver;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        location ~ .*\.(jsp|action){
            gzip off;
            proxy_pass http://newshooserver;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }





转http://willko.iteye.com/blog/667091

对于静态文件先压缩再输出是再正常不过的事了,但是这种压缩都是动态的,在每次请求都会先压缩再输出,大大浪费了很多cpu。如果前端加了反向代理缓存,那能减少这种浪费。但不是每个生产环境前端都有缓存的。而nginx有个模块Gzip Precompression,这个模块的作用是对于需要压缩的文件,直接读取已经压缩好的文件(文件名为加.gz),而不是动态压缩,对于不支持gzip的请求则读取原文件。 

编译nginx的时候需要把--with-http_gzip_static_module参数加上。 

配置: 
Java代码  
#启动预压缩功能,对所有类型的文件都有效  
gzip_static on;  
  
#找不到预压缩文件,进行动态压缩  
gzip on;   
gzip_min_length 1000;  
gzip_buffers 4 16k;  
gzip_comp_level 5;  
gzip_types text/plain application/x-javascript text/css application/xml;  
  
#gzip公共配置  
gzip_http_version 1.1  
gzip_proxied expired no-cache no-store private auth;  
  
#纠结的配置  
#对于ie有个bug,响应vary头后将不会缓存请求,每次都会重新发新的请求。所以,对于ie 1-6直接禁用gzip。  
gzip_disable "MSIE [1-6]\.";  
#开启Http Vary头,vary头主要提供给代理服务器使用,根据Vary头做不同的处理。例如,对于支持gzip的请求反向代理缓存服务器将返回gzip内容,不支持gzip的客户端返回原始内容。  
gzip_vary on;  

gzip_static配置优先级高于gzip
开启nginx_static后,对于任何文件都会先查找是否有对应的gz文件
gzip_types设置对gzip_static无效
为了方便生产环境自动生成压缩文件,写了一条命令自动完成这些事情 
根据文件后缀名遍历需要压缩的文件
对比文件的修改时间
自动调用gzip生成压缩文件
Java代码  
find ./ -type f -printf '%TY %Tm %Td %TH %TM %TS\t%p\n'  
| grep -iE '\.(html|txt|css|js)$'  
| awk -F'\t' '{  
  
gz_file=$2 ".gz";  
stat_cmd="stat -c \"%Y\" " gz_file;  
exist_cmd="[  -e \"" gz_file "\" ] && echo 1 || echo 0";  
  
exist_cmd | getline gz_file_exist;  
  
if (gz_file_exist) {  
    stat_cmd | getline last_modify_timestamp;  
} else {  
    last_modify_timestamp=0;  
}  
  
if (last_modify_timestamp < mktime($1)) {  
    system("gzip -c9 " $2 " > " gz_file);  
    print gz_file " [created]";  
}  
  
}'  


chrome将不会支持gzip了,而用SDCH,SDCH比较像浏览器级的minify 
分享到:
评论
1 楼 lck140 2013-08-01  
经过本人在linux下对nginx进行编译安装及测试,发现根本不行。
压缩好的xxx.gz.js被加载到界面后根本没被解压。此方法不可行。
测试版本:nginx-1.5,环境linux,测试过程完全按上面的配置。
QQ:402081881         

相关推荐

    nginx访问静态文件不下载.rar

    标题 "nginx访问静态文件不下载" 暗示了用户可能遇到了在使用Nginx服务器时,尝试访问静态文件(如HTML、CSS、JavaScript或图片等)却导致浏览器下载文件而不是正常显示的情况。Nginx是一款高性能的HTTP和反向代理...

    docker下nginx配置压缩字体和图片等配置

    # 静态文件目录,根据实际情况调整 index index.html index.htm; location / { try_files $uri $uri/ =404; } } } ``` 这里的关键行是`gzip on;`,它开启了GZIP压缩。`gzip_types`指令定义了哪些类型的文件...

    nginx-1.18.0已开启gzip压缩优化vue项目大小.zip

    这样,当Vue Element Admin项目被打包时,所有匹配规则的文件都会被预先gzip压缩,准备就绪后上传到Nginx服务器。 总结起来,这个压缩包提供了一个已经优化过的Vue Element Admin项目,它经过了gzip压缩,能够更快...

    13-nginx gzip压缩提升网站速度.zip

    它不仅可以作为静态文件服务器,还能通过反向代理功能将请求转发给后端的应用服务器,实现负载均衡,提高服务的可用性和响应速度。 gzip压缩技术则是在HTTP传输中广泛使用的一种数据压缩方法,它可以减小网页资源的...

    Nginx部署使用gzip压缩的Unity网页WebGL

    2. **gzip压缩**:为了提高网站性能,Nginx提供了gzip静态内容压缩功能,可以减小传输数据量,加快页面加载速度。在Nginx配置文件中,我们需要添加或修改以下部分来启用gzip: ```nginx gzip on; gzip_types text...

    nginx 映射本地文件

    Nginx擅长处理静态文件请求,可以高效地进行文件传输,因此在静态资源服务方面表现出色。 ### 2. 实现本地文件映射的步骤 #### 2.1 安装Nginx 首先,你需要在你的服务器上安装Nginx。在Ubuntu或Debian系统中,...

    Nginx服务器实现数据静态压缩的方法

    在Nginx中,可以使用ngx_http_gzip_static_module模块来实现静态文件的压缩。 要配置Nginx的静态文件压缩,首先需要在编译Nginx时加入静态压缩模块。这可以通过在编译命令行中添加 "--with-...

    nginx简单的负载,缓存静态文件配置

    nginx配置文件nginx.conf ,主要标记了nginx 的负载配置upstream,静态资源缓存,是否开启压缩

    js压缩gzip格式

    这些工具在打包过程中自动将JS文件转换为gzip格式,生成的文件可以在静态资源服务器上直接使用。 在提供的压缩包中,"gzip使用说明"文档将详细解释如何安装gzip和实际操作步骤。它可能涵盖了在不同操作系统(如...

    Nginx中的Gzip压缩配置介绍

    在Nginx中启用Gzip压缩,可以使静态资源(如HTML、CSS、JavaScript等)在传输过程中被压缩,降低了带宽需求,尤其对于移动用户和低带宽环境来说,效果尤为明显。 以下是一些Nginx中Gzip压缩的主要配置指令: 1. `...

    详解Nginx服务器的配置中开启文件Gzip压缩的方法

    在Nginx中启用Gzip压缩通常涉及编辑Nginx的配置文件,通常是`/etc/nginx/nginx.conf`或`/usr/local/nginx/conf/nginx.conf`。以下是一些关键配置指令及其作用: 1. `gzip on;`:这一行用于开启Gzip压缩功能。设置为...

    基于nginx的静态网页部署的实现

    当用户访问相应域名时,Nginx根据server_name匹配并找到正确的server块配置,然后根据请求的URI去root指令指定的目录中查找对应的静态文件,并将文件内容返回给用户。 以上配置完成后,还需要创建网站资源目录并...

    Nginx使用Gzip算法对报文进行压缩详解

    其中,Gzip是一种广泛使用的压缩算法,它可以有效地减小静态资源(如HTML、CSS、JavaScript文件)的大小,从而加快内容的传输速度。Nginx作为一个高性能的HTTP和反向代理服务器,它提供了对Gzip压缩的支持。这篇文章...

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

    如果想要进一步提高性能,可以结合使用Gzip压缩和其他性能优化策略。 总的来说,`nginx-http-concat`模块是Nginx服务器的一个强大工具,可以帮助优化网站性能,尤其是对于那些包含大量静态资源的大型网站。通过减少...

    Gzip压缩无效的终极解决方案!

    4、单击“服务”标签,选中“压缩应用程序文件”和“压缩静态文件”,同时根据情况设置临时目录的最大容量,初期可以限制为1G左右; 5、返回Internet信息服务(IIS)管理器,右击“Web服务扩展”,弹出Web服务扩展...

    详解Nginx 静态文件服务配置及优化

    2. **压缩输出**:启用Gzip压缩可以显著减小静态文件的大小,提高传输效率。在http配置段中添加 `gzip on;` 即可开启Gzip。 3. **合并和缩小CSS/JS文件**:将多个CSS或JavaScript文件合并为一个文件,可以减少HTTP...

    nginx文件资源下载

    6. **Gzip压缩**:为了减少网络传输的数据量,Nginx可以启用Gzip压缩,对响应内容进行压缩后再发送给客户端。 7. **缓存机制**:Nginx可以缓存经常请求的资源,减少对后端服务器的压力,提高响应速度。 8. **限速...

    nginx的各项详细配置-超多注释

    本篇文章将详细介绍Nginx的各项配置,并结合提供的"nginx.conf"配置文件和"nginx.txt"说明文件,深入解析Nginx的配置语法和应用场景。** ### 1. Nginx基本结构 Nginx的配置文件主要由多个块组成,包括全局块、...

    数据瘦身专家:Nginx中gzip压缩的高效实现

    3. **静态内容服务**:Nginx非常适合于提供静态内容,如图片、视频和HTML页面。 4. **SSL/TLS终端**:Nginx支持SSL和TLS协议,可以作为SSL终端,为HTTP流量提供加密。 5. **模块化设计**:Nginx具有模块化的设计,...

Global site tag (gtag.js) - Google Analytics