如何配置Nginx的FastCGI缓存的响应体类型?

  • Post category:Linux

配置Nginx的FastCGI缓存的响应体类型可以提高网站的性能并减轻服务器的负担。下面是详细教程:

步骤一:安装Nginx和FastCGI模块

首先需要安装需要的软件,通过apt或yum或源码的形式进行安装,比如在Ubuntu上通过apt-get安装:

sudo apt-get update
sudo apt-get install nginx nginx-common nginx-core fcgiwrap libfcgi-dev

安装完成后,需要修改Nginx的配置文件来启用FastCGI缓存。

步骤二:配置Nginx的FastCGI缓存

要启用FastCGI缓存,需要在Nginx的配置文件中添加以下代码:

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

这段代码指定了FastCGI缓存的目录和大小。在这个例子中,缓存目录是/var/cache/nginx。levels=1:2表示缓存目录是二级的(比如/var/cache/nginx/a/b),缓存区的名称是my_cache。inactive=60m表示缓存60分钟后过期。

步骤三:添加FastCGI缓存的响应体类型

FastCGI缓存默认情况下只缓存200和301状态码的响应。如果需要缓存其他状态代码的响应,需要配置include文件来添加缓存的响应类型。在Nginx的配置文件中增加以下代码:

include /etc/nginx/conf.d/fastcgi_cache.types;

然后在fastcgi_cache.types文件中添加需要缓存的响应类型,例如:

fastcgi_cache_valid 200 60m;
fastcgi_cache_valid 404 5m;
fastcgi_cache_valid 401 1m;

这里针对200、404和401状态码分别配置了缓存响应时间为60分钟,5分钟和1分钟。

示例一:添加HTML响应体类型

假设我们需要缓存HTML文件,可以按照以下步骤操作:

  1. 在fastcgi_cache.types文件中添加以下配置:
fastcgi_cache_valid 200 10m;
fastcgi_cache_valid 301 10m;
fastcgi_cache_valid 404 1m;
fastcgi_cache_valid 403 1m;
fastcgi_cache_bypass $http_pragma;
fastcgi_cache_revalidate $http_cache_control;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_key $scheme$request_method$host$request_uri;
  1. 在Nginx的配置文件中添加以下配置:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
    listen 80;
    server_name example.com;

    location / {
        try_files $uri $uri/ @php;
    }

    location @php {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;

        # 设置缓存
        fastcgi_cache my_cache;
        fastcgi_cache_valid 200 10m;
        fastcgi_cache_valid 301 10m;
        fastcgi_cache_valid 404 1m;
        fastcgi_cache_valid 403 1m;
        fastcgi_cache_bypass $http_pragma;
        fastcgi_cache_revalidate $http_cache_control;
        fastcgi_cache_methods GET HEAD;
        fastcgi_cache_key $scheme$request_method$host$request_uri;
    }
}

这里我们设置了缓存路径为 /var/cache/nginx,缓存的大小是10mb,缓存区的名称是 my_cache ,缓存时间是60分钟。

示例二:添加JSON响应体类型

假设我们需要缓存JSON文件,可以按照以下步骤操作:

  1. 在fastcgi_cache.types文件中添加以下配置:
fastcgi_cache_valid 200 10m;
fastcgi_cache_valid 301 10m;
fastcgi_cache_valid 404 1m;
fastcgi_cache_valid 403 1m;
fastcgi_cache_bypass $http_pragma;
fastcgi_cache_revalidate $http_cache_control;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_key $scheme$request_method$host$request_uri;
  1. 在Nginx的配置文件中添加以下配置:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
    listen 80;
    server_name example.com;

    location /api {
        # 配置 json 请求头
        add_header Content-Type application/json;

        try_files $uri $uri/ @api;
    }

    location @api {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;

        # 设置缓存
        fastcgi_cache my_cache;
        fastcgi_cache_valid 200 10m;
        fastcgi_cache_valid 301 10m;
        fastcgi_cache_valid 404 1m;
        fastcgi_cache_valid 403 1m;
        fastcgi_cache_bypass $http_pragma;
        fastcgi_cache_revalidate $http_cache_control;
        fastcgi_cache_methods GET HEAD;
        fastcgi_cache_key $scheme$request_method$host$request_uri;
    }
}

这里我们设置了缓存路径为 /var/cache/nginx,缓存的大小是10mb,缓存区的名称是 my_cache ,缓存时间是60分钟。关键点是在 location /api 中添加了 Content-Type 的配置,确保请求的类型被正确标记,从而允许我们指定正确的fastcgi_cache_valid配置。