如何配置Nginx的FastCGI缓存目录?

下面是如何配置Nginx的FastCGI缓存目录的完整攻略:

  1. 创建缓存目录

需要先在服务器上创建一个用于缓存的目录,比如 /var/cache/nginx/fastcgi。你可以使用如下命令:

sudo mkdir -p /var/cache/nginx/fastcgi
sudo chown -R www-data:www-data /var/cache/nginx/fastcgi

其中 www-data:www-data 是 Nginx 运行用户和用户组,如果你在配置 Nginx 时使用的是其它用户,则需要相应地修改这个值。

  1. 配置 Nginx

找到你的 Nginx 配置文件,在 http 或者 server 块下添加如下配置:

fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=fastcgicache:100m inactive=60m;

其中:

  • /var/cache/nginx/fastcgi 是 FastCGI 缓存目录的路径;
  • levels=1:2 表示缓存目录下的子目录个数,这里表示使用一级子目录和二级子目录;
  • keys_zone=fastcgicache:100m 定义了缓存 key 的存储区域及其大小,这里将 key 存储区域命名为 fastcgicache,大小为 100MB;
  • inactive=60m 指定了缓存内容的过期时间,这里设置为 60 分钟。

  • 配置 FastCGI 缓存

继续在 Nginx 配置文件中添加如下配置:

location ~ \.php$ {
    # ... 其它 PHP 相关配置
    fastcgi_cache_key "$scheme$request_method$host$request_uri";
    fastcgi_cache_bypass $skip_cache;
    fastcgi_no_cache $no_cache;
    fastcgi_cache_valid 200 60m;
    fastcgi_cache_valid 404 10m;
    fastcgi_cache_min_uses 3;
    fastcgi_cache_use_stale error timeout invalid_header http_500;
    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}

其中:

  • fastcgi_cache_key "$scheme$request_method$host$request_uri" 定义了缓存的 key,这里使用了请求的协议、请求方法、主机名和请求 URI 进行组合;
  • fastcgi_cache_bypass $skip_cache 定义了当 $skip_cache 变量为 1 时,不使用缓存;
  • fastcgi_no_cache $no_cache 定义了当 $no_cache 变量为 1 时,不使用缓存,且会将带有缓存的响应头直接返回;
  • fastcgi_cache_valid 200 60m 定义了当返回码为 200 时,缓存有效期为 60 分钟;
  • fastcgi_cache_valid 404 10m 定义了当返回码为 404 时,缓存有效期为 10 分钟;
  • fastcgi_cache_min_uses 3 定义了至少有 3 个请求才会将内容缓存;
  • fastcgi_cache_use_stale error timeout invalid_header http_500 定义了当后端 FastCGI 出现错误、超时、返回无效的头或者返回 500 时,使用缓存响应。

  • 测试缓存效果

完成上面的配置后,就可以测试缓存的效果了。可以使用以下命令来测试:

curl -I http://example.com/index.php

第一次访问会返回一个普通的 HTTP 响应头,第二次访问会返回带有 X-Cache-Status 响应头的 HTTP 响应。当响应头中包含 X-Cache-Status: HIT 时,表示请求使用了缓存。当响应头中包含 X-Cache-Status: MISS 时,表示请求没有使用缓存。

示例配置:

将 FastCGI 缓存存储在 /data/cache/nginx/fastcgi 目录下,缓存 key 使用请求 URI,仅缓存响应码为 200 的请求,并且缓存时间为 30 分钟。

http {
    # ...
    fastcgi_cache_path /data/cache/nginx/fastcgi levels=1:2 keys_zone=fastcgicache:100m inactive=30m;

    server {
        listen 80;
        server_name example.com;
        root /var/www/html;

        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php7.1-fpm.sock;

            fastcgi_cache_bypass $skip_cache;
            fastcgi_no_cache $no_cache;
            fastcgi_cache_key "$request_uri";
            fastcgi_cache_valid 200 30m;
            fastcgi_cache_min_uses 3;

            include fastcgi_params;
        }
    }
}

将 FastCGI 缓存存储在 /var/cache/nginx/fastcgi 目录下,缓存 key 使用请求 URI,缓存时间分别为 10 分钟和 1 分钟,同时缓存 404 响应。

http {
    # ...
    fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=fastcgicache:100m inactive=10m;

    server {
        listen 80;
        server_name example.com;
        root /var/www/html;

        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php7.1-fpm.sock;

            fastcgi_cache_bypass $skip_cache;
            fastcgi_no_cache $no_cache;
            fastcgi_cache_key "$request_uri";

            fastcgi_cache_valid 200 10m;
            fastcgi_cache_valid 404 1m;

            include fastcgi_params;
        }
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何配置Nginx的FastCGI缓存目录? - Python技术站

(0)
上一篇 2023年4月19日
下一篇 2023年4月19日

相关文章

  • Nginx 限流

    电商平台营销时候,经常会碰到的大流量问题,除了做流量分流处理,可能还要做用户黑白名单、信誉分析,进而根据用户ip信誉权重做相应的流量拦截、限制流量。Nginx自身有的请求限制模块ngx_http_limit_req_module、流量限制模块ngx_stream_limit_conn_module基于令牌桶算法,可以方便的控制令牌速率,自定义调节限流,实现基…

    Nginx 2023年4月9日
    00
  • nginx1.16.1平滑升级到1.18

    系统环境:redhat7.6  nginx版本:nginx1.16.1 1、到官网查看最新稳定版的安装包 http://nginx.org/en/download.html 2、查看已经安装nginx的版本以及安装模块 [dip@dip007 nginx]$ /user/local/nginx/sbin/nginx -Vnginx version: ngin…

    Nginx 2023年4月10日
    00
  • Nginx Rewrite使用场景及配置方法解析

    Nginx Rewrite使用场景及配置方法解析 什么是Nginx Rewrite Nginx Rewrite是Nginx服务器的一种URL重写方式,它可以实现将URL地址重写为符合我们需求的形式,方便管理网站的URL结构,提高网站的SEO排名。Nginx Rewrite功能强大,支持各种各样的重写方式,包括正则匹配、变量替换等。 Nginx Rewrite…

    Nginx 2023年5月16日
    00
  • nginx常见面试题

    问题1:Nginx是用来干嘛的? Nginx是一个高性能的HTTP和反向代理服务器,这个基本是用来前端服务器集群后做负载均衡和动静分离用的。 负载均衡即是代理服务器将接收的请求均衡的分发到各服务器中。 用于HTTP、HTTPS、SMTP、POP3和IMAP协议。 问题2:负载均衡原理 Nginx是通过反向代理实现的负载均衡。 什么是正向代理与反向代理? 正向…

    Nginx 2023年4月11日
    00
  • centos7 安装 nginx-1.14.2

    第一步:安装依赖包 yum -y install pcre-devel  openssl openssl-devel libevent-devel libxslt-devel gcc gcc-c++ gcc-g7 第二步:下载 nginx-1.14.2.tar.gz                解压到 /usr/local/tools           …

    Nginx 2023年4月11日
    00
  • k8s笔记——NodePort暴露nginx-controller实现https自动跳转自定义nodePort端口

    安装nginx-controller并暴露nodePort helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx/ helm repo update helm install gateway ingress-nginx/ingress-nginx –set contro…

    Nginx 2023年4月9日
    00
  • NGINX热部署

    备份二进制文件: cp /usr/bin/nginx nginx.old 把编译好的新版Nginx的二进制文件覆盖旧版本。objs目录为编译过程中的中间文件目录。 cp -r /new_nginx/objs/nginx /usr/bin/ -f 向正在运行Nginx的master进程发送热部署信号: ps -ef | grep nginx root 6668…

    Nginx 2023年4月16日
    00
  • 如何配置Nginx的FastCGI缓存大小?

    为了配置Nginx的FastCGI缓存大小,您需要进行以下步骤: 步骤1:检查Nginx和FastCGI模块 首先,您需要检查Nginx和FastCGI模块是否已正确安装并在服务器上运行。您可以通过以下命令检查它们的状态: nginx -V 该命令将显示您的Nginx版本以及已编译的模块列表。如果FastCGI模块不在此列表中,请安装它。 步骤2:配置Fas…

    Nginx 2023年4月19日
    00
合作推广
合作推广
分享本页
返回顶部