• Nginx缓存配置


    访问我的博客

    前言

    本文介绍利用 nginx 的 nginx_ngx_cache_purge 模块来实现缓存功能,前几篇文章介绍了 Nginx 的动静分离以及 CDN 技术,在其基础上,再对整个页面进行缓存,将大大提高服务器的负载能力。

    基础环境

    环境搭建

    Nginx 与 nginx_ngx_cache_purge 下载解压

    安装 wget

    yum install wget
    

    下载 Nginx

    wget  http://nginx.org/download/nginx-1.12.1.tar.gz
    

    解压 Nginx/usr/local/src/ 目录

    tar -zxvf nginx-1.8.1.tar.gz -C /usr/local/src/
    

    下载 ngx_cache_purge

    wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
    

    解压到 Nginx 同一级目录

    tar -zxvf ngx_cache_purge-2.3.tar.gz -C /usr/local/src/
    

    目录结构为

    ---/usr/local/src
       --nginx-1.8.1
       --ngx_cache_purge-2.3
    

    进入 Nginx 解压目录

    cd nginx-1.8.1
    

    安装必要依赖

    yum -y install gcc pcre-devel openssl openssl-devel
    

    检查安装环境,并指定将来要安装的路径和要安装的插件

    ./configure --prefix=/usr/local/nginx/ --with-http_realip_module --add-module=../ngx_cache_purge-2.3
    

    参数说明:
    --prefix: 将 nginx 安装到此目录
    --with-http_realip_module 启用获取用户真实 IP 模块
    --add-module=../ngx_cache_purge-2.3 添加 ngx_cache_purge 模块,用于缓存

    进行编译安装

    make && make install
    

    编译完成后,没有出现 error 为编译安装成功

    设置 Nginx 缓存

    编辑 nginx.conf 配置文件

    vi /usr/local/nginx/conf/nginx.conf
    

    添加如下配置

    # 需要在 /tmp 目录下创建 cache 文件夹!
    proxy_cache_path /tmp/cache levels=1:2 keys_zone=tmpcache:200m inactive=10m max_size=5g;
    
    server {
    	listen       80;
    	server_name  www.domain.com;#你的域名
    	charset utf8;
    
    	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_set_header        X-Up-Calling-Line-Id $http_x_up_calling_line_id;
    	proxy_ignore_headers    X-Accel-Expires Expires Cache-Control Set-Cookie;
    
    	access_log logs/access.log  main;
    
    	location / {
    			proxy_pass http://127.0.0.1:8080;
    			#proxy_cache 的值是 proxy_cache_path 中的 keys_zone 的值
    			proxy_cache tmpcache;
    			#缓存 key 的值
    			proxy_cache_key $host$uri$is_args$args;
    			proxy_cache_valid 200 301 5m;
    			proxy_cache_use_stale updating error timeout invalid_header http_500 http_502 http_503 http_504;
    
    			expires 1m;
    			# 将缓存的状态添加到 Header 中
    			add_header X-Cache '$upstream_cache_status';
    	}
    }
    

    启动 Nginx

    /usr/local/nginx/sbin/nginx
    

    启动 Tomcat

    可以使用自己的项目,或者使用我提供的项目来进行测试。

    wget http://ojt4b2cr5.bkt.clouddn.com/SpringDemo.war
    

    将下载的 war 包放到 Tomcat 的 webapps 目录下,启动 Tomcat。

    测试 Nginx 缓存

    缓存之前

    查看 /tmp/cache 目录, 目录下面没有任何文件

    修改本机(windows)的 hosts 文件,将配置的域名指向服务器 IP

    192.168.200.129 www.domain.com
    

    打开浏览器访问 www.domain.com/SpringDemo/testpage1

    mark

    发现 X-Cache 的状态为 MISS ,说明没有缓存。

    再次刷新页面后

    mark

    X-Cache 的状态已经变成了 HIT

    同时在服务器上查看 /tmp/cache 目录

    cd /tmp/cache/

    发现该目录下面已经多了文件目录,进去之后打开文件,发现正是刚刚访问页面的源码,说明 Nginx 的缓存已经配置成功了。只要是配置的域名下面的页面, 如果没有进行过滤,都会缓存到服务器。当第二次访问的时候,请求经过 Nginx 服务器时,Nginx 直接返回已经缓存的静态页面,这样将大大降低应用服务器 Tomcat 的负载。

    需要注意的是:并不是该域名下的所有页面都需要进行缓存,如果缓存有误,会出现很严重的问题。比如不正确的将域名下的用户中心进行了缓存,当其他用户也进入页面的时候,显示的全部都是第一个进入该页面用户的信息。因此建议做缓存时,最好根据域名来做, 根据用户不同显示不同的页面的地址就不要做缓存。当然,如果接口地址规范,亦可以通过 Nginx 正则匹配路径的方式,只将某些匹配的路径做缓存。

  • 相关阅读:
    cf536c——思路题
    cf536b——优先队列的运用
    王道论坛和九度论坛
    Ubuntu 12.04 LTS 下配置 apache支持SPDY, 使用wireshark 抓包分析SPDY 协议
    vnc/route/ifconfig 配置
    MIME protocol 说明
    理解邮件传输协议(SMTP、POP3、IMAP、MIME)
    GNU C中的零长度数组
    ftp protocol
    HTTP协议头部与Keep-Alive模式详解
  • 原文地址:https://www.cnblogs.com/vcmq/p/9484379.html
Copyright © 2020-2023  润新知