Nginx动静分离

young 466 2021-10-18
server{
    listen 80;
    server_name local_host;
    location /{
        proxy_pass http://127.0.0.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
        proxy_connect_timeout 60s;
    }
    location ~* \.(gif|png|jpg|jpeg|css|svg|js)$ {
    	root static;
	}
}

缓存处理

第一次请求静态资源时,会响应一个ETag,第二次请求时,请求会带上ETage和Last Modified给nginx,标志和修改时间没有变动,表示走缓存(chrome默认),不推荐依赖于浏览器

ETage:对象的标志值,就一个对象而言,文件被修改,ETag也会修改

location ~* \.(gif|png|jpg|jpeg|css|svg|js)$ {
    root static;
    # 过期时间
    expires 1d;
}

优化压缩

Gzip on|off 是否开启gzip压缩

Gzip_buffers 4 16k 设置gzip申请内存的大小,作用是按照指定大小的倍数申请内存空间。4 16k表示按照原始数据数据大小以16k为单位的4倍申请内存。

Gzip_comp_level[1-9] 压缩级别,级别越高,压缩越小,但是会占用CPU资源

Gzip_disable 正则匹配UA 表示什么样的浏览器不进行gzip

Gzip_min_length 开始压缩的最小长度(小于多少就不进行压缩),可以指定单位,比如1k

Gzip_http_version 1.0|1.1 表示开始压缩的http协议版本

Gzip_proxied(nginx做前端代理时启动该选项,表示无论后端服务器的header头返回什么信息,都无条件压缩)

Gzip_type text/pliain,applicaiton/xml 对那些类型的文件做压缩(conf/mime.conf)

Gzip_vary on|off是否传输gzip压缩表示;启用应答头"Vary:Accept-Encoding";给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的http头来判断,是否需要压缩

注意:

  1. 图片,mp3这样的二进制文件,没必要做压缩处理,因为这类文件压缩比很小,压缩过程会消耗CPU资源
  2. 太小的文件没必要压缩没因为压缩后会增加一些头信息,反而导致文件变大
  3. Nginx默认只对text/html进行压缩,如果要对html之外的内容进行压缩传输,需要手动配置。