Nginx缓存
Nginx基于Proxy Store实现,使用Nginx的http_proxy模块可以实现类似于squid的缓存功能。当启用缓存时,Nginx会将相应数据保存在磁盘缓存中,只要缓存数据尚未过期,就会使用缓存数据来响应客户端的请求。
设置位置:Nginx启用缓存需要在最顶层的http节点下,如:/etc/nginx/nginx.conf 配置
启用响应缓存
若想启用缓存,需在 http 中使用 proxy_cache_path 指令。其第一个强制参数为用于缓存内容的本地文件系统路径,第二个强制参数为 keys_zone,定义 共享内存区(shared memory zone)的名称和大小,该共享内存用于保存缓存项目的元数据:
http { ... proxy_cache_path /data/nginx/cache keys_zone=one:10m; }
然后,想为哪些 context 来缓存服务器的响应,就在其中使用 proxy_cache 指令,用来指定内存区的名称,即 proxy_cache_path指令中的 keys_zone 参数中的名称,此处为 one:后面的10m就会缓存的大小
http { ... # 1、proxy_cache_path:代理缓存路径,对应的keys_zone指的是之后server中使用到的参数对应是one, proxy_cache_path /data/nginx/cache keys_zone=one:10m; server { //2、设置proxy_cache proxy_cache one; location / { proxy_pass http://localhost:8000; } } }
注意,由 keys_zone 参数指定的大小,不会限制被缓存下来的响应数据的总量。被缓存的响应和其元数据的副本一同保存在文件系统中特定的文件中,若想限制被缓存的响应数据的总量,可以在 proxy_cache_path 指令中使用 max_size 参数。
最终对于proxy_cache_path来进行优化设置:
# 后面的路径根据实际需求来进行修改 proxy_cache_path /data/to_cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;
开启Gzip压缩
配置在http中:
# 是否启动gzip压缩,on代表启动,off代表开启,方便文件与请求数据传输 gzip on; # 启用gzip压缩的最小文件,小于该设置值的文件不会压缩 gzip_min_length 10k; # 是否在http header中添加Vary: Accept-Encoding,建议开启 gzip_vary on; #压缩的等级,数字选择范围是1-9,数字越小压缩的速度越快,消耗cpu就越大 gzip_comp_level 2; # 进行压缩的文件类型。javascript有多种形式,对应值根据mime.types文件中找 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml application/json;
Location学习
Nginx 中 location 块配置详解
优先级顺序:
1. location = # 精准匹配 2. location ^~ # 带参前缀匹配 3. location ~ # 正则匹配(区分大小写) 4. location ~* # 正则匹配(不区分大小写) 5. location /a # 普通前缀匹配,优先级低于带参数前缀匹配。 6. location / # 任何没有匹配成功的,都会匹配这里处理
静态资源:
location ~* \.(gif|jpg|jpeg)$ { # 匹配所有以 .gif、.jpg 或 .jpeg 结尾的请求,不区分大小写 # 然而,所有请求 /images/ 下的图片会被 [ config D ] 处理,因为 ^~ 到达不了这一条正则/ [ configuration E ] }