当你需要提高 Nginx 的性能时,可以考虑启用 FastCGI 缓存,减轻后端服务器的负担。在配置 Nginx FastCGI 缓存时,HTTP 请求头也可以设置缓存的一些特性,这有助于控制和优化缓存,提高缓存效果和性能。
以下是配置 Nginx FastCGI 缓存的 HTTP 请求头的完整攻略:
1. 安装 Nginx 和 FastCGI 模块
首先需要安装 Nginx 和 FastCGI 模块。这里假设你已经安装好了 Nginx 和 FastCGI 模块。
2. 配置 FastCGI 缓存
接下来配置 FastCGI 缓存。可以使用以下示例代码来配置 fastcgi_cache_path
和 fastcgi_cache_key
:
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=fastcgi_cache:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_path
定义了 FastCGI 缓存的路径和一些参数,包括:
levels
:指定缓存保存目录的层数。keys_zone
:指定缓存使用的共享内存块大小,以及共享内存块的名称。inactive
:指定缓存里的数据在多长时间内没有被访问后,将被清除。
fastcgi_cache_key
定义了 FastCGI 缓存使用的键,该键由一些请求上下文信息组成,例如协议、请求方法、主机名、URI 等。
3. 配置 HTTP 请求头
在开启 FastCGI 缓存之前,你需要配置 HTTP 请求头指示 Nginx 缓存内容的一些特性。以下是一些常见的 HTTP 缓存请求头:
Cache-Control
在 HTTP 请求头中,Cache-Control
指示客户端和代理应该如何缓存响应内容。可以使用以下示例来配置 Cache-Control:
add_header Cache-Control "public, max-age=86400, s-maxage=86400";
通过该配置,Nginx 会向客户端和代理推荐将响应数据存储在缓存中,并设置缓存时间为一天(86400 秒),并告知代理缓存过期时间是相同的。
Vary
在 HTTP 请求头中,Vary
指示代理缓存响应时,使用哪些请求标头来唯一标识响应内容。可以使用以下示例来配置 Vary:
add_header Vary "Accept-Encoding, User-Agent";
通过该配置,Nginx 会告诉代理在缓存响应之前,应该将 Accept-Encoding
和 User-Agent
标头的值考虑在内。
示例说明
以下是两个示例,演示如何使用 Nginx FastCGI 缓存和 HTTP 请求头。
示例 1:使用 Cache-Control 缓存
假设你有一个 PHP 应用程序,使用 FastCGI 作为后端。你想使用 Nginx 应用缓存,来加速关键页面的访问速度。
假设该应用程序的 URI 是 /example
。你可以将以下配置添加到 Nginx 配置文件中:
location /example {
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache fastcgi_cache;
fastcgi_cache_valid 200 60m;
add_header Cache-Control "public, max-age=86400, s-maxage=86400";
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
}
在该配置中,fastcgi_cache_key
使用了被选定的缓存键,并且使用名称为 fastcgi_cache
的缓存块。fastcgi_cache_valid
定义了,如果后端响应值为 200,那么缓存的有效时间是一小时。
add_header
将设置 Cache-Control
请求头,表示新的缓存可以在 24 小时内使用。
示例 2:使用 Vary 标头缓存
假设你使用的是 JavaScript 应用程序,依赖于用户的浏览器。该应用程序的 URI 是 /app
。
该应用程序是单页应用程序,应用程序的本身不会改变,但是将根据请求向服务器请求数据。因此,对于 Accept-Encoding
和 User-Agent
,需要使用 Vary
指示代理缓存。
你可以将以下代码添加到 Nginx 配置文件中:
location /app {
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache fastcgi_cache;
fastcgi_cache_valid 200 60m;
add_header Cache-Control "public, max-age=86400, s-maxage=86400";
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
add_header Vary "Accept-Encoding, User-Agent";
}
以上的示例为你展示了如何使用 Nginx FastCGI 缓存和 HTTP 请求头,有了这样的配置之后,可以加速关键页面的响应时间并减轻后端服务器的负担。