关于nginx的反向代理缓存配置,用的最多的就是CDN公司,目前CDN公司用纯nginx做缓存的已经很少了,基本都用tnginx(阿里的)、openresty;但是这两款软件都是基于nignx开发的,openresty封装了lua的框架,使其更灵活;
  下面的配置示例以openresty为例,配置文件格式跟nginx是一样的,所以配置文件是通用的;
一、编译安装openresty,因为我在配置文件中用到了分片缓存,所以将分片缓存的模块编译进去了;
  wget https://openresty.org/download/openresty-1.19.3.1.tar.gz
  tar xvf openresty-1.19.3.1.tar.gz
  ./configure --prefix=/usr/local/openresty --with-http_slice_module --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module

二、配置文件正文

proxy_cache_path /data/cache/nginx levels=1:1:1 keys_zone=cache:20m inactive=30d max_size=800g;

upstream cache {
server 123.XX.XX.XXX:8088;
} server {
listen 80;
server_name www.zhide666.cn;
root /data/yum;
charset UTF-8;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
auth_basic "Admin Area";
auth_basic_user_file /usr/local/openresty/nginx/conf/.ngxpasswd; location / {
if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){
add_header Content-Disposition: 'p_w_upload';
}
} location ~*\.(mp4|jpg|html)$ {
slice 1m;
proxy_cache cache;
# proxy_cache_key $uri$is_args$args$slice_range;
proxy_cache_key $request_uri$slice_range;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
add_header Cache $upstream_cache_status;
expires 10d;
proxy_cache_valid 200 206 304 301 302 10d;
proxy_pass http://cache;
}
}

proxy_cache_path配置解释:
  /data/cache/nginx:定义缓存路径
  levels=1:1:1:表示创建目录结构为三级目录,每一级目录都是一个字符,如果是1:2:1的话,则二级目录为2个字符;
  keys_zone=cache:20m:设置存储所有缓存key和相关信息的共享内存区。cache为内存空间的名称(自定义),20m是名为cache的内存空间大小为20m;1m大约能存8000个key;
  inactive=30d:指定被缓存的内容多久不被访问将从缓存中移除,默认10min;该配置为30d内不访问则缓存被自动删除;
  max_size=800g:最大缓存阀值,'cache manager'进程会监控最大缓存大小,当缓存达到该阀值时,该进程将从缓存中移除最近最少访问的内容。这个数值一般为磁盘的容量的90%;

location配置解释:
  slice 1m:开启分片,分片大小为1m;
  proxy_cache cache:定义使用哪块内存空间存储缓存信息,在proxy_cache_path中定义的内存空间的名称;
  proxy_ignore_headers:如果响应头包含 Cache-Control、Set-Cookie或者只有一个 Vary则响应内容将不会被缓存。可以使用 proxy_ignore_headers 来忽略这些响应头。
  proxy_cache_key:缓存的key;
    $request_uri:带参数缓存
    $uri:不带参数缓存
    $is_args:如果请求中有参数,值为"?",否则为空字符串;
    $args:请求中的参数值
    $slice_range:range请求的范围值;
  proxy_set_header:向后端传递请求头;
  add_header:向客户端传递响应头;
  $upstream_cache_status:缓存状态
    HIT:缓存命中,直接返回缓存中内容,不回源到后端。
    MISS:缓存未命中,回源到后端获取最新的内容。
    EXPIRED:缓存命中但过期了,回源到后端获取最新的内容。
    UPDATING:缓存已过期但正在被别的Nginx Worker进程更新,配置了proxy_cache_use_stale updating指令时会存在该状态。
    STALE:缓存已过期,但因后端服务出现了问题(比如后端服务挂了)返回过期的响应,配置了如proxy_cache_use_stale error timeout指令后会出现该状态。
    REVALIDATED:启用proxy_cache_revalidate指令后,当缓存内容过期时,Nginx通过一次if-modified-since的请求头去验证缓存内容是否过期,此时会返回该状态。
    BYPASS:proxy_cache_bypass指令有效时,强制回源到后端获取内容,即使已经缓存了。
  expires:告诉浏览器这个资源缓存多长时间;
  proxy_cache_valid:缓存符合条件的状态码的资源;
  proxy_pass:upstream定义的后端地址;

nginx反向代理缓存配置的更多相关文章

  1. nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录

    在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...

  2. Nginx反向代理的配置

    Chapter: Nginx基本操作释疑 1. Nginx的端口修改问题 2. Nginx 301重定向的配置 3. Windows下配置Nginx使之支持PHP 4. Linux下配置Nginx使之 ...

  3. nginx反向代理的配置优化

    作者:守住每一天 blog:liuyu.blog.51cto.combbs:bbs.linuxtone.orgmsn:liuyubj520#hotmail.comemail:liuyu105#gmai ...

  4. 【netcore基础】CentOS 7.6.1810 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动

    之前写过一篇Ubuntu的环境搭建博客,感觉一些配置大同小异,这里重点记录下 nginx 作为静态 angular 项目文件服务器的配置 参考链接 [netcore基础]ubuntu 16.04 搭建 ...

  5. Centos7 nginx 反向代理的配置

    一.正向代理与反向代理 1.正向代理 正向代理往VPN理解 正向代理,也就是传说中的代理,他的工作原理就像一个跳板(VPN),简单的说: 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这 ...

  6. Nginx反向代理搭建配置

    1.反向代理方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将服务器上得到的结果返回给internet 上请求连接的客户端,此时代理服务器对外就表现为一个 ...

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

    昨天尝试用nginx搭建nuget镜像服务器,镜像服务器需要两个功能:1)反向代理:2)内容缓存. 用nginx做反向代理,配置非常简单,只需在/etc/nginx/nginx.conf中添加一个包含 ...

  8. nginx反向代理缓存服务器的构建

    一:代理服务可简单的分为正向代理和反向代理: 正向代理:用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送 ...

  9. [svc]tomcat目录结构/虚拟主机/nginx反向代理cache配置

    tomcat目录文件 /usr/local/tomcat/bin/catalina.sh stop sleep 3 /usr/local/tomcat/bin/catalina.sh start to ...

随机推荐

  1. Java — 面向对象

    目录 一.类和对象 二.方法 三.封装 四.继承 五.多态 六.final 七.static 八.抽象类 九.接口 十.内部类 一.类和对象 简介:类是对事物的一种描述,对象则为具体存在的事物. 类的 ...

  2. web安全之信息收集篇

    信息收集 1.网络信息 网络信息就包括网站的厂商.运营商,网站的外网出口.后台.OA. 2.域名信息 通过域名可以查洵网站的所有人.注册商.邮箱等信息 --->Whois 第三方查询,查询子域网 ...

  3. linux下的mysql数据库以及mysql主从复制

    参考博客 1.mysql数据库的安装 centos7如何安装mysql 1.yum安装 1.1首先配置yum源,然后再用yum进行安装 2. 源代码编译安装 3.rpm包安装 yum安装的前提条件,是 ...

  4. pycham的安装、优化、使用

    一.下载与安装 下载地址:https://confluence.jetbrains.com/display/PYH/Previous+PyCharm+Releases 注册:参考地址:http://i ...

  5. Golang可重入锁的实现

    Golang可重入锁的实现 项目中遇到了可重入锁的需求和实现,具体记录下. 什么是可重入锁 我们平时说的分布式锁,一般指的是在不同服务器上的多个线程中,只有一个线程能抢到一个锁,从而执行一个任务.而我 ...

  6. drools执行完某个规则后终止别的规则执行

    目录 1.背景 2.需求 3.实现方案 1.通过Fact判断 2.通过全局变量判断 3.通过halt方法 4.实现上述需求 4.1 drl 文件编写 4.2 运行结果 5.完整代码 1.背景 在我们开 ...

  7. Docker容器:将带UI的程序直接转为Web应用,so easy

    摘要:使用Docker容器,将带UI的程序,直接转换为Web应用.很方便,跟大家分享一下. 本文分享自华为云社区<使用Docker容器,将带UI的程序,直接转为Web应用>,作者:tsjs ...

  8. 云开发中的战斗机 Laf,让你像写博客一样写代码

    各位云原生搬砖师 and PPT 架构师,你们有没有想过像写文章一样方便地写代码呢? 怎样才能像写文章一样写代码? 理想的需求应该是可以在线编写.调试函数,不用重启服务,随时随地在 Web 上查看函数 ...

  9. 关于一些lrzsz的知识

    问题:如何从windows轻松上传文件到Linux? 方法:容器里面:apt-get update && apt-get install lrzsz 有yum的情况:yum -y in ...

  10. [学习笔记]使用Docker+Jenkin自动化流水线发布.Net应用

    ​使用Docker容器方案可以快速安全地将项目部署到客户的服务器上,作为公司项目,需要解决两个问题: 1. 需要搭建一个私有的Docker仓库,以便安全的存储镜像 2. 需要一套自动化发布方案,实现代 ...