要配置 Nginx 的 FastCGI 缓存的 HTTP 头,首先需确保 Nginx 已经安装并启动。然后,需要进行以下步骤:
- 配置 FastCGI 缓存
编辑 Nginx 的配置文件,通常是 /etc/nginx/nginx.conf
或 /etc/nginx/conf.d/default.conf
,添加以下部分:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
这段代码的作用是设置了一个 FastCGI 缓存区,缓存范围是 /var/cache/nginx
下的 1 级目录,2 级目录,缓存时间默认为 60 分钟(1 小时),并设置了缓存 key。
- 缓存 HTTP 头
需要在 FastCGI 缓存区设置头信息来缓存 HTTP 头。
添加以下代码块到 Nginx 的配置文件:
add_header X-Cache $upstream_cache_status;
add_header Cache-Control "public, max-age=3600";
add_header Last-Modified "$date_gmt";
expires 1h;
上述代码中,X-Cache
设置了返回值的缓存状态,Cache-Control
设置了缓存控制(缓存 1 小时),Last-Modified
显示最后一次修改的时间,并且expires 1h
告诉浏览器文件应该在 1 小时后过期。
示例 1:
server {
listen 80;
server_name www.example.com;
location / {
# 设置 FastCGI 缓存
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
# 设置头信息
add_header X-Cache $upstream_cache_status;
add_header Cache-Control "public, max-age=3600";
add_header Last-Modified "$date_gmt";
expires 1h;
# FastCGI 缓存指令
fastcgi_cache my_cache;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $http_pragma;
fastcgi_cache_revalidate on;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
# FastCGI 代理
fastcgi_pass unix:/var/run/fastcgi.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
以上代码块设置了一个 FastCGI 缓存区,并且添加了 HTTP 头信息缓存,同时定义了 FastCGI 缓存指令和 FastCGI 代理。当请求到达 fastcgi_cache 指令时,Nginx 会检查缓存,如果有缓存则会直接返回缓存内容,并在 HTTP 头信息中添加 X-Cache
等信息。
示例 2:
server {
listen 80;
server_name www.example.com;
location / {
# 设置 FastCGI 缓存
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
# 设置头信息
add_header X-Cache $upstream_cache_status;
add_header Cache-Control "public, max-age=3600";
add_header Last-Modified "$date_gmt";
expires 1h;
# FastCGI 缓存指令
fastcgi_cache my_cache;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $http_pragma;
fastcgi_cache_revalidate on;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
# FastCGI 代理
fastcgi_pass unix:/var/run/fastcgi.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location /admin/ {
# 管理员页面无缓存
fastcgi_cache_bypass 1;
}
}
以上代码块是对示例 1 中添加一个管理员页面的处理,因为管理员可能需要实时更新和编辑页面,所以在此处设置了无缓存。