Nginx配置多站点下的Proxy_cache或Fastcgi_cache缓存加速

张戈博客分享过很多关于缓存加速的教程,自己也是不断的在摸索,追求最佳的网站静态缓存加速方案。在这里简单的总结一下:

1、使用虚拟主机的朋友推荐使用缓存插件或 php 代码版缓存方案=>点此直达 2、使用独立主机的朋友推荐使用 Nginx 的 Fastcgi 纯静态缓存方案=>点此直达

在我分享了 Nginx 的 Fastcgi 缓存之后,有不少朋友已折腾成功。不过有朋友反馈,不知道在多站点下如何配置 Nginx Fastcgi。而所有网上分享的方案都是单个站点的,我本以为多站点的直接在 php 的 location 模块中插入 fastcgi 缓存配置就好了,结果发现会报错,提示缓存空间已被使用。

经过张戈轮番测试,最终试出了多站点下的 Fastcgi 缓存配置,下面简单分享下。

一、部署 http 模块

①、单个站点

单个站点上篇文章已经分享过了,在 http 模块内加入如下配置即可:

fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=WORDPRESS:150m inactive=31d max_size=10G;
fastcgi_temp_path /tmp/wpcache/temp;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

②、多个站点

当要给多个站点开启 fastcgi 缓存时,以上配置就不行了,会报错。经过测试,修改如下即可:

#站点1缓存配置
fastcgi_cache_path /tmp/zhangge_cache levels=1:2 keys_zone=zhangge.net:384m inactive=1d max_size=5G;
#站点2缓存配置
#如果要开启更多站点缓存,请继续增加,注意每个站点的 缓存路径 和 keys_zone 要自定义区分一下
#Ps:代码中的参数都只是范例,实际使用请根据服务器配置自行修改
fastcgi_cache_path /tmp/zgboke_cache levels=1:2 keys_zone=zgboke.com:384m inactive=1d max_size=5G;
#其他配置可以不变
fastcgi_temp_path /tmp/temp_cache;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;

二、部署 server 模块

配置好了 http 模块之后,server 模块就很简单了!

只要在不同的站点的 php 模块下插入不同的 fastcgi 缓存配置即可,其实就是 key_zone 的区别而已。

比如,我同时给张戈博客和中国博客联盟 2 个站点的配置如下:

张戈博客:

server(
#其他配置略 
location ~ [^/]\.php(/|$)
            {
                try_files $uri =404;
                fastcgi_pass  unix:/dev/shm/php-cgi.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
                #fastcgi缓存配置
                fastcgi_cache_bypass $skip_cache;
                fastcgi_no_cache $skip_cache;
                add_header X-Cache "$upstream_cache_status From $host";
                fastcgi_cache zhangge.net;
                fastcgi_cache_valid 200 301 302 1d;
        }
#其他配置略
}

中国博客联盟:

server(
#以上配置略 
location ~ [^/]\.php(/|$)
            {
                try_files $uri =404;
                fastcgi_pass  unix:/dev/shm/php-cgi.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
                #fastcgi缓存配置
                fastcgi_cache_bypass $skip_cache;
                fastcgi_no_cache $skip_cache;
                add_header X-Cache "$upstream_cache_status From $host";
                fastcgi_cache zgboke.com;
                fastcgi_cache_valid 200 301 302 1d;
        }
#以下配置略
}

其实就是和 http 模块内定义的缓存一 一对应而已,这样才能区分开来啊!否则就会报错。

三、Proxy_cache 缓存

分享了多站点的 fastcgi 缓存配置,顺带也分享一下 Proxy_cache 的多站点缓存配置好了。免得某些朋友不会依葫芦画瓢。。。

其实,我也没实际测试,但是依此类推应该如下配置即可,有需求的测试一番就知道了:

①、http 模块

proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
#同样的有几个站点就配几条proxy_cache_path,注意缓存路径和keys_zone需要自定义区分
#Ps:代码中的参数只是范例,实际使用请根据服务器配置自行修改
proxy_cache_path /tmp/web1_cache levels=1:2 keys_zone=web1_cache:256m inactive=31d max_size=2g;
proxy_cache_path /tmp/web2_cache levels=1:2 keys_zone=web2_cache:256m inactive=31d max_size=2g;
proxy_temp_path /tmp/temp_cache;

②、server 模块

至于 server 模块应该就不用跟上面介绍的那样详细了吧!不同站点只是 proxy_cache 这个配置不一样而已!比如:

站点 1 配置

#其他配置略
proxy_cache web1_cache; #填写站点对应的keys_zone即可
proxy_cache_valid 200 302 304 301 1d;
proxy_cache_valid any 1m;

站点 2 配置:

#其他配置略
proxy_cache web2_cache; #填写站点对应的keys_zone即可
proxy_cache_valid 200 302 304 301 1d;
proxy_cache_valid any 1m;

Ps:可能有人又要问了,这配置是放到哪的啊?唉,就这样您还瞎折腾啥呢?老老实实写文章吧!

哦了,看懂以上配置,随便部署多少站点的 fastcgi 或 proxy 缓存都不用愁了!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏wannshan(javaer,RPC)

git 项目分支管理

2010年人家写的,(2010年我还不认识git)。原文在这http://nvie.com/posts/a-successful-git-branching-m...

306100
来自专栏同步博客

Redis可视化工具 Redis Desktop Manager

  从接触Redis也有两年,平时就使用它来做缓存层,它给我的印象就是很强大,内置的数据结构很齐全,加上Redis5.0的到来,新增了很多特色功能。而Redis...

11K30
来自专栏漏斗社区

metasploit与Nessus的小结合

47760
来自专栏猿人谷

CentOS7安装GitLab、汉化、邮箱配置及使用

一.GitLab简介 GitLab是利用Ruby On Rails开发的一个开源版本管理系统,实现了一个自托管的Git项目仓库,是集代码托管,测试,部署...

30670
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Concourse CI设置持续集成管道

Concourse CI是一个现代的,可扩展的集成系统,旨在通过可组合的声明性语法自动测试管道。

18820
来自专栏北京马哥教育

Linux自动化运维工具之ansible(一)

豌豆贴心提醒,本文阅读时间5分钟 运维自动化是运维发展的必然方向,同时也是一个运维工程师实现效率最大化的必然选择。 运维自动化的知识可以说是浩瀚如海,本文将...

43750
来自专栏玩转JavaEE

elasticsearch文档读写模型

前面两篇文章,向读者介绍了Elasticsearch中REST API的基本规范,相信读者阅读完后,对REST API已经有了一个基本的认识,从本篇文章开始,要...

11920
来自专栏cvm功能

通过控制台vnc方式登录云主机

1)打开控制台,点击到云服务器的实例一栏,找到要登录的云主机,点击最右侧的操作栏的登录按钮。

4.7K110
来自专栏酷玩时刻

Centos 通过 Nginx 和 vsftpd 构建图片服务器

这篇文章主要介绍了Centos 通过 nginx 和 vsftpd 构建图片服务器, 需要的朋友可以参考下

30620
来自专栏皮振伟的专栏

[qemu][block]qemu-nbd技术分析

前言: 想要修改Guest中的文件,第一种办法可以把虚拟机启动虚拟机,在虚拟机内部修改。 还有一种办法,使用qemu的nbd功能。准确来说,是使用linux提供...

88860

扫码关注云+社区

领取腾讯云代金券