推广

nginx缓存以及gzip配置。

iseeyu3年前 (2023-12-25)推广123

目录

  • 概述
  • nginx缓存配置(未使用代理的)
  • 解决nginx反向代理缓存不起作用的问题
  • 反向代理缓存完整配置
  • nginx开启gzip
  • php7进阶到架构师相关阅读

概述

这是关于php进阶到架构之Nginx进阶学习的第篇文章:nginx缓存以及gzip配置

  • 第一篇:5分钟搞懂nginx的location匹配规则
  • 第二篇:nginx rewrite规则详解
  • 第三篇:5分钟上手nginx分流实战
  • 第四篇:Nginx跨域配置
  • 第五篇:深入理解浏览器缓存
  • 第六篇:nginx缓存以及gzip配置

nginx缓存配置(未使用代理的)

nginx配置缓存的优点:

可以在一定程度上,减少服务器的处理请求压力。比如对一些图片,css或js做一些缓存,那么在每次刷新浏览器的时候,就不会重新请求了,而是从缓存里面读取。这样就可以减轻服务器的压力。

nginx可配置的缓存又有2种

1)客户端的缓存(一般指浏览器的缓存),分为协商缓存和强制缓存,参考深入理解浏览器缓存,请参考深入理解浏览器缓存

2)服务端的缓存(使用proxy-cache实现的,实现反向代理服务器缓存)

在nginx.conf加入如下规则:

server {
  location ~* \\.(html)$ {
    access_log off;
    add_header  Cache-Control  max-age=no-cache;
  }

  location ~* \\.(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff)$ {
    # 同上,通配所有以.css/.js/...结尾的请求
    access_log off;
    add_header    Cache-Control  max-age=360000;
  }
}

如上缓存配置解析含义如下:

add_header Cache-Control max-age=no-cache的含义

html文件不设置强制缓存时间协商缓存,使用 Last-Modified。no-cache 会发起往返通信来验证缓存的响应,但如果资源未发生变化,则不会下载,返回304。

add_header Cache-Control max-age=360000的含义

nginx缓存以及gzip配置。

给上面匹配后缀的文件设置强制缓存,且缓存的时间是360000秒,第一次访问的时候,从服务器请求,当除了第一次以外,再次刷新浏览器,会从浏览器缓存读取,那么强制缓存一般是从内存里面先读取,如果内存没有,再从硬盘读取。

注意:如上只是不对反向代理的页面进行缓存设置的,但是如果是反向代理后的页面,如上设置是不生效的。比如说我php起了一个服务,然后通过访问nginx反向代理的方式代理到另一个php服务来,上面的配置是不生效的。

解决nginx反向代理缓存不起作用的问题

使用proxy-cache,配置如下:

server {
  listen  8081;
  server_name  xxx.abc.com;
  location / {
    proxy_pass http://localhost:7878;
    add_header  Cache-Control  max-age=no-cache;
  }
}

反向代理缓存起作用配置步骤如下:

第一步:

需要创建一个用于存放缓存文件的文件夹。比如我们这里使用 /data/nuget-cache。比如使用命令:mkdir /data/nuget-cache. 创建缓存目录

第二步:

需要在nginx.conf的http设置部分添加 proxy_cache_path的设置,如下:

http {
  // ..... 其他的配置
  proxy_cache_path  /data/nuget-cache levels=1:2 keys_zone=nuget-cache:20m max_size=50g inactive=168h;
  server {
    listen  8081;
    server_name  xxx.abc.com;
    location / {
      proxy_pass http://localhost:7878;
      add_header  Cache-Control  max-age=no-cache;
    }
  }
}

proxy_cache_path各个配置值的含义解析如下:

proxy_cache_path:指缓存的目录,目录为:/data/nuget-cache。

levels=1:2表示采用2级目录结构;

keys_zone指的是缓存空间名称,叫nuget-cache。缓存内存的空间为20M。

max_size指的是缓存文件可以占用的最大空间为50G.

inactive=168h;默认过期时间为168个小时,为7天,也可以写成:inactive=7d;

第三步:

我们还需要在server设置部分添加 proxy_cache 与 proxy_cache_valid的设置。如下代码:

http {
  // ..... 其他的配置
  proxy_cache_path  /data/nuget-cache levels=1:2 keys_zone=nuget-cache:20m max_size=50g inactive=168h;
  server {
    listen  8081;
    server_name  xxx.abc.com;
    location / {
      proxy_pass http://localhost:7878;
      add_header  Cache-Control  max-age=no-cache;
      proxy_cache nuget-cache;
      proxy_cache_valid 168h;
    }
  }
}

proxy_cache设置的是 proxy_cache_path中的keys_zone的值。

proxy_cache_valid:设置的是缓存过期时间,比如设置168个小时过期。

第四步(最后一步):

需要在server中再加上如下代码:

proxy_ignore_headers Set-Cookie Cache-Control;
proxy_hide_header Cache-Control;
proxy_hide_header Set-Cookie;

**proxy_ignore_headers的含义是:**忽略Cache-Control的请求头控制,依然进行缓存,

比如对请求头设置cookie后,默认是不缓存的,需要我们增加忽略配置。

反向代理缓存完整配置

http {
  // ..... 其他的配置
  proxy_cache_path  /data/nuget-cache levels=1:2 keys_zone=nuget-cache:20m max_size=50g inactive=168h;
  server {
    listen  8081;
    server_name  xxx.abc.com;
    location / {
      proxy_pass http://localhost:7878;
      add_header  Cache-Control  max-age=no-cache;
      proxy_cache nuget-cache;
      proxy_cache_valid 168h;
      proxy_ignore_headers Set-Cookie Cache-Control;
      proxy_hide_header Cache-Control;
      proxy_hide_header Set-Cookie;
    }
  }
}

nginx开启gzip

开启gzip配置是在http层加的。基本配置代码如下:

# 开启gzip
gzip on;
# 启用gzip压缩的最小文件;小于设置值的文件将不会被压缩
gzip_min_length 1k;
# gzip 压缩级别 1-10 
gzip_comp_level 2;
# 进行压缩的文件类型。
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;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/111970.html

相关文章

小编分享小编解密:到底什么是网站SEO优化。

小编分享小编解密:到底什么是网站SEO优化。

我们都知道seo是Search Engine Optimization的缩写, 翻译成中文就是“搜索引擎优化\"。那什么是的SEO了。这里杭州带你简单了解下。 网站seo优化是一种利用搜索引擎的搜索规则来提高目的站在有关搜索引擎内的排名的方式。一般是指在了解搜索引擎自然排名...

论思维对我们的重要性

人们的大脑中每天都会接收到各种各样的信息,这些信息中的一部分,在很大程度上将会成为干扰我们的思想。每个人每天都会在大脑中无意识地构思很多想法,而有些想法是断点式的,毫无规律性和关联性可言的,也有些想法会和我们已有的思想发生关联,形成连续性的有逻辑的深入思考。而后者就是约翰·...

多多学院在哪里进入

多多学院在哪里进入

你是否还在为如何进入多多学院而烦恼?是否还在网络上寻找各种教程和攻略?别急,今天我就来告诉你多多学院在哪里进入,让你一秒变成老司机! 一、多多学院是什么? 多多学院是我国知名的在线教育平台,提供各种课程,包括编程、设计、外语等,让你在家就能学习到专业的知识。 二、如何进入多多学...

网站个性化运营方法。

网站个性化运营方法。

这里所说的“网站个性化”并不是网站设计做得多么个性,而是网站会根据不同客户的需求提供不同的服务和信息,现在越来越多的购物网站提供的“猜你喜欢”、“看过又看”等板块就是针对客户的一种个性化服务。在如今充分考虑用户体验的情况下,网站个性化运营绝对是一种最好的营销方式。 1、购物网站进行个性化...

精髓的社群运营网赚论坛经验,都在这一篇软文里面。

精髓的社群运营网赚论坛经验,都在这一篇软文里面。

置信不少人都参加了各种各样的社群,例如:早起打卡群,英语学习群,7天PPT速成群...刚参加时每个成员都十分积极地交流,而到前面,是不是你本人也屏蔽了不少社群? 关于正在或许预备做社群的你来说,是不是也有这种苦恼,我们应该如何维护群呢? 1.用户入群动机 普通用户参加一个群的动机无非是以下几点...

淘宝超级推荐适合什么产品(淘宝的超级推荐有用吗)

淘宝超级推荐适合什么产品(淘宝的超级推荐有用吗)

网站建设以后,新网站上线,首先得让搜索引擎知道你网站的存在,让搜索引擎短期内收录网站。每个搜索引擎都有一个网站提交入口,提交网址即可。...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片