文档章节

Nginx 手记(十)代理缓存服务

神奇Sam
 神奇Sam
发布于 2017/08/30 14:48
字数 597
阅读 381
收藏 1
点赞 0
评论 0

缓存类型

  • 客户端缓存
  • 代理缓存
  • 服务端缓存

流程

第一次:
    客户端请求 -> nginx代理(无缓存)-> 服务端
                                            |
        客户端 <- nginx代理(进行代理缓存)<---
    
第二次:
    客户端请求 -> nginx代理(有缓存)-> 客户端

配置语法

#缓存的空间
语法:proxy_cache_path string [...]
默认值:无
上下文:http,server,location

#缓存配置
语法:proxy_cache zone|off
默认值:proxy_cache off;
上下文:http,server,location

#缓存过期周期
#code:返回状态码
#time:过期的时间周期
语法:proxy_cache_valid [code ...] time;
默认值:无
上下文:http,server,location

#缓存的纬度
语法:proxy_cache_key string;
默认值:proxy_cache_key $scheme$proxy_host$request_uri;
上下文:http,server,location

配置用例
upstream backend {
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
    server 127.0.0.1:8003;
}

#代理缓存空间
#levels:缓存文件按照两层目录进行分级保存
#keys_zone:定义这个空间的名字,10m为这个空间的大小(一般1m可以存放8000个key)
#max_size:这个缓存空间的最大空间,满了会触发淘汰规则进行处理
#inactive:不活跃时间 表示在60分钟内,如果该缓存文件没被访问,会把它清理掉
#use_temp_path:临时文件,建议关闭。
proxy_cache_path /opt/site/cache levels=1:2 keys_zone=sam_cache:10m max_size=10g inactive=60m use_temp_path=off;

server {
    listen       80;
    server_name  localhost www.sam.com;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    
    #匹配uri,如果uri为 /login 或 /register 或 /password/reset,添加变量$cookie_nocache 值为1
    if ($request_uri ~ ^/(login|register|password\/reset)){
        set $cookie_nocache 1;
    }

    location / {
        proxy_pass http://backend;
        
        proxy_cache sam_cache;                  #使用前面定义的proxy_cache_path
        proxy_cache_valid 200 304 12h;          #设置200和304过期时间为12h
        proxy_cache_valid any 10m;              #其他过期时间为10分钟
        proxy_cache_key $host$uri$is_args$args; #修改缓存纬度,缓存的key
        add_header Nginx-Cache "$upstream_cache_status";
        
        #配置不缓存的,如果上面条件判断中有新增变量$cookie_nocache,那么对应请求不进行缓存
        proxy_no_cache $cookie_nocache;
        
        #当命中的服务器出现错误、超时、请求头不完整、500、502、503时,会跳过这一台服务器去访问下一台服务器。
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        
        ###### 以下是代理常规配置 ######
        proxy_redirect default; #一般配置默认即可
        
        #添加头信息
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        
        #配置超时
        proxy_connect_timeout 30;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
        
        #配置缓冲区,
        proxy_buffer_size 32k;
        proxy_buffering on;
        proxy_buffers 4 128k;
        proxy_busy_buffers_size 256k;
        proxy_max_temp_file_size 256k;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    
}

© 著作权归作者所有

共有 人打赏支持
神奇Sam
粉丝 18
博文 41
码字总数 27998
作品 0
广州
程序员
系统架构的演变

一、最开始的网站架构 最初的架构,应用程序、数据库、文件都部署在一台服务器上,如图: 二、应用、数据、文件分离 随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库...

罗文浩 ⋅ 2016/02/19 ⋅ 0

Nginx与Apache相比有哪些优势

Nginx作为HTTP服务软件的后起之秀,由于具有更好的稳定性和高效性,近年来已被越来越多的大中小网站所使用。而传统的LAMP网络架构组合也逐渐被LNMP(或者LEMP,其中的E取自“engine x”)所取...

tynecastle ⋅ 2016/11/17 ⋅ 0

Nginx server之Nginx作为web服务器(基于域名或IP的web服务器)

一:nginx简介 Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开...

fighting-cluber ⋅ 2014/03/11 ⋅ 0

Nginx从上路到翻车(一)Nginx初识

趁着闲赋在家,整理一下自己的思路,首先是Nginx方面,非常感谢Nginx高性能服务这本书给我提供的帮助,以下的内容呢相当于自己的读书笔记。 一 Nginx ("engine x") 初识 1.官方网站:http://...

pheraoh ⋅ 2017/05/23 ⋅ 0

Nginx自学手册(四)反向代理和缓存

(一)nginx反向代理 什么是代理服务器 :代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回...

lqbyz ⋅ 2017/08/08 ⋅ 0

nginx和squid配合搭建的web服务器前端系统

两种前端架构: lvs -> nginx前端代理 -> squid缓存 lvs -> squid前端缓存 -> nginx中层代理 squid在前面的优点: Squid作纯代理比较稳当 前端少一级代理,响应速度会快,出问题的可能性要小...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

nginx从入门到实践

花了一周时间了解nginx相关的知识,主要内容有: 基础知识: Nginx的快速部署安装、模块、基础配置语法,Nginx的日志输出、Nginx默认配置模块、Nginx做为http代理服务,介绍代理服务的类型,正...

898009427 ⋅ 2017/12/06 ⋅ 0

Linux学习手记

生成SSL证书 openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr 开源免费SSL证书:https://letsencrypt.org/ http://www.vpser.net/build/letsencrypt-certbot......

flydo ⋅ 2015/12/16 ⋅ 0

Varnish调优手记

最近公司做活动推广,流量暴增,后端服务器压力山大,导致用户的请求响应时间延长,客户因此抱怨声音很大。   为尽快解决问题,在安排人员不断优化后端代码的同时,考虑在nginx前增加varni...

nmshuishui ⋅ 2014/05/07 ⋅ 0

Varnish调优手记

  最近公司做活动推广,流量暴增,后端服务器压力山大,导致用户的请求响应时间延长,客户因此抱怨声音很大。   为尽快解决问题,在安排人员不断优化后端代码的同时,考虑在nginx前增加v...

qinerg ⋅ 2013/11/22 ⋅ 14

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot集成Druid的最简单的小示例

参考网页 https://blog.csdn.net/king_is_everyone/article/details/53098350 建立maven工程 Pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM......

karma123 ⋅ 58分钟前 ⋅ 0

Java虚拟机基本结构的简单记忆

Java堆:一般是放置实例化的对象的地方,堆分新生代和老年代空间,不断未被回收的对象越老,被放入老年代空间。分配最大堆空间:-Xmx 分配初始堆空间:-Xms,分配新生代空间:-Xmn,新生代的大小一...

算法之名 ⋅ 今天 ⋅ 0

OSChina 周日乱弹 —— 这么好的姑娘都不要了啊

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @TigaPile :分享曾惜的单曲《讲真的》 《讲真的》- 曾惜 手机党少年们想听歌,请使劲儿戳(这里) @首席搬砖工程师 :怎样约女孩子出来吃饭,...

小小编辑 ⋅ 今天 ⋅ 8

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部