如何配置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日

相关文章

  • haproxy + nginx + proxy protocol 获得客户真实IP方法

    公司网站架构为: 前面2台HA负载均衡,后面3台Nginx负载均衡反向代理,然后后面有N台WEB服务器 由于要统计IP,需要在WEB服务器日志里体现客户端真实IP 那么问题来了,通过HA代理的HTTP协议是没有问题的,后端的WEB服务器可以正常获取到客户端真实IP 但是通过HA代理的HTTPS协议就不行了,为什么呢,因为我们HA设置的是代理模式就是TCP模式…

    Nginx 2023年4月10日
    00
  • ubuntu环境下nginx源码编译安装

    1、更新系统 sudo apt-get update && sudo apt-get upgrade 2、安装nginx的依赖包  zlib pcre openssl(可以源码安装也可以直接系统安装) sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev libssl-dev build-…

    Nginx 2023年4月11日
    00
  • linux下Nginx安装Zend Optimizer组件步骤

    注意:Zend Optimizer 在php5.3以上的版本已经集成了,所以php5.3以上的版本没必要安装了。而推出了Zend Guard Loader。 http://www.zend.com/en/products/guard/zend-optimizer-zend-loader   1.我用的PHP版本是5.4.23  64位 64位压缩包:wget…

    Nginx 2023年4月11日
    00
  • Linux10.6 Nginx访问日志

        日志格式     vim /usr/local/nginx/conf/nginx.conf //搜索log_format $remote_addr 客户端IP(公网IP) $http_x_forwarded_for 代理服务器的IP $time_local 服务器本地时间 $host 访问主机名(域名) $request_uri 访问的url地址 $…

    Nginx 2023年4月11日
    00
  • Centos7下nginx的安装与配置教程详解

    下面是Centos7下nginx的安装与配置教程详解的完整攻略: 安装步骤 第一步:更新系统 在安装nginx前,需要先更新系统: sudo yum update 第二步:安装nginx 执行以下命令安装nginx: sudo yum install nginx 第三步:启动nginx 执行以下命令启动nginx: sudo systemctl start …

    Nginx 2023年5月16日
    00
  • 【摘自张宴的”实战:Nginx”】nginx配置

    user nobody;worker_processes 2; #error_log logs/error.log;error_log logs/error.log notice;#error_log logs/error.log info; #pid logs/nginx.pid; #worker_rlimit_nofile   65535  #指定每个n…

    Nginx 2023年4月11日
    00
  • Nginx服务器中的模块编写及相关内核源码初探

    我来为您详细讲解“Nginx服务器中的模块编写及相关内核源码初探”的攻略,这里包含了两个示例。 简介 Nginx是一款轻量级的高性能Web服务器,常用于构建高并发、高可用的Web服务。Nginx的优秀性能得益于其简洁高效的架构和开放的模块化设计。本文将介绍如何在Nginx服务器中编写模块,并初步探究相关的内核源码。 模块编写示例1:HTTP模块 下面以编写一…

    Nginx 2023年5月16日
    00
  • NGINX心跳检测

    NGINX心跳检测 upstream springboot { server 10.3.73.223:8080 max_fails=2 fail_timeout=30s; server 10.3.73.223:8090 max_fails=2 fail_timeout=30s; } server { listen 80; server_name localh…

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