配置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文件,可以按照以下步骤操作:
- 在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;
- 在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文件,可以按照以下步骤操作:
- 在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;
- 在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配置。