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头来判断,是否需要压缩
注意:
- 图片,mp3这样的二进制文件,没必要做压缩处理,因为这类文件压缩比很小,压缩过程会消耗CPU资源
- 太小的文件没必要压缩没因为压缩后会增加一些头信息,反而导致文件变大
- Nginx默认只对text/html进行压缩,如果要对html之外的内容进行压缩传输,需要手动配置。