其实这章主要就是优化访问时间和减少宽带问题

优化访问时间,一般css,js,woff还有图片都是静态文件,是一般都不用更改得,如果每次请求都要走tomcat,都是要耗时一些的,那么可以第一次访问的时候就存储在nginx缓存里的,那么再一次请求就不会再走tomcat请求了。

一般服务器都是有带宽的,所以传输文件其实都是有限制的,那么最应该的就是将一些文件压缩,这样就能更多的传输文件,也就相当于增加了带宽,但是,如果要是去买的话就很贵哟!如果nginx就能做到,何乐而不为呢?

下面就把我的nginx 配置文件贴出来,gzip压缩和静态资源缓存都配置在上面,一些说明也都有。

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}

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"'
                      #添加一条我们的需要的日志格式,以便测试负载均衡
                      '$upstream_addr "$upstream_status" ${upstream_response_time}';
    access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #开启nginx Gzip压缩
    gzip  on;
    #只有超过1k的文件才压缩
    gzip_min_length 1k;
    #说明哪些类型的文件在传输前进行压缩
    #image/jpeg类似的图片文件本身就已经就是压缩文件,对其gzip压缩后效果并不明显
    #gzip对于文本文件的效果极好    
    gzip_types text/plain application/javascript text/css application/font-woff;
 
    #低版本IE禁用Gzip压缩
    gzip_disable "MSIE [1-6]\."
    #压缩使用的缓存,每个内存业为4k,申请32倍,一般写这个就行
    gzip_buffers 32 4k;
    #压轴的设置压缩级别1-9越大压缩比越高,但浪费的cpu资源也越多
    #建议1-4即可
    gzip_comp_level 1;

    #代表了临时文件夹
    proxy_temp_path d:/nginx-temp;
    #设置了缓存目录   proxy_cache_path d:/nginx-cache
    #levels代表采用1:2也就是两级目录的形式保存缓存文件(静态资源css,js),同时文件名进行了md5编码
    #keys_zone 定义缓存的名称及内存的使用,名称为babytun-cache,在内存中开始100m交换空间
    #inactive=7d 如果某个缓存文件超过7天没有被访问,则删除,如果7天内访问过,则延续7天
    #max_size=20g 代表设置文件夹最大不能超过20g,超过后会自动将访问频率(命中率)最低的缓存文件删除
    proxy_cache_path d:/nginx-cache levels=1:2  keys_zone=babytun-cache:100m  inactive=7d  max_size=20g;

    #后端服务器池
    upstream babytun{
       #通过不同的端口访问
       server 192.168.0.101:8001 weight=3;
       #最多失败1次 连接2秒就要切换其他服务器
       server 192.168.0.101:8002 weight=10 max_fails=1 fail_timeout=5s;
       server 192.168.0.101:8003 weight=2;
       server 192.168.0.101:8004 weight=2;
    }

    server{
       #nginx通过80端口提供服务
       listen 80;
       
       #静态资源缓存
       #利用正则表达式匹配url,匹配成功则执行内部逻辑
       #~* 不区分大小写,~ 区分大小写
       location ~* \.(gif|jpg|css|png|js|html)(.*){
           proxy_pass http://babytun;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           #通过当前这个缓存访问,放到d:/nginx-cache缓存文件中
           proxy_cache babytun-cache;
           #如果静态资源响应状态码为200(成功)302 (暂定性重定向)时,缓存文件有效期一天 这个缓存有效期优先级高
           proxy_cache_valid 200 302 24h;
           #301(永久性重定向) 缓存保存5天
           proxy_cache_valid 301 5d;
           #其他情况
           proxy_cache_valid any 5m;
           #浏览器的缓存时间
           expires 90d;
       }
       #使用babytun服务器池进行后端处理
       location /{
         proxy_pass http://babytun;
         proxy_set_header Host $host;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
    }
}

 然后静态资源缓存是否成功缓存到了,可以看你配置的缓存地址中去看文件

想要看是否压缩了文件,可以访问nginx映射后台的地址,找到配置压缩文件的css,或者js等等,上面有gzip就说明压缩了

转自:https://blog.csdn.net/dfBeautifulLive/article/details/85317640