# 定义缓存路径、缓存级别、缓存区域和缓存时间等参数
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache_zone:10m inactive=60m;
# 定义后端服务器池 (各个后端服务器可以提供相同的服务)
# 对于负载均衡,Nginx会根据负载情况分配请求 (默认是轮询分配)
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
# 定义Nginx如何代理请求
server {
listen 80; # 监听端口号
server_name example.com;
# 指定请求代理到后端服务器上
# 默认情况下,请求会通过负载均衡分配到不同的后端服务器上
location / {
# 指定代理转发的地址
proxy_pass http://backend;
# 启用请求缓存,缓存在名为my_cache_zone的缓存区中
proxy_cache my_cache_zone;
# 设置缓存时间限制 (这里设置为60分钟)
proxy_cache_valid 200 60m;
# 为响应添加一个头,方便统计缓存状态
add_header X-Cache-Status $upstream_cache_status;
}
}
配置文件中的各个项含义解释如下:
-
proxy_cache_path:定义缓存路径、缓存级别、缓存区域和缓存时间等参数。levels参数指定了缓存目录创建的层数(默认为1:2),keys_zone参数定义缓存区名和大小。inactive参数表示参数proxy_cache_path中指定的路径下的内容在多长时间内未被访问就被视为过期(单位是秒),在这段时间内缓存的内容不会被删除,如果到达指定时间还没有被访问,那时就会被删除。 -
upstream:定义后端服务器池。该池包含了多个备选服务器,用于提供数据源。在此示例中,我们列出了两个后端服务器。可以根据实际情况添加或删除。 -
server:定义一个虚拟服务器。在此示例中,我们监听80端口并启用请求缓存,以提高缓存命中率。 -
listen:指定虚拟服务器要监听的端口号。 -
server_name:指定服务器名称。在这里,我们指定服务器名称为example.com。 -
location:用于定位一个请求,并指定如何代理请求。 -
proxy_pass:指定代理转发的地址。在这里,我们使用了上文定义的后端服务器池。 -
proxy_cache:启用请求缓存,并指定缓存区的名称。将缓存目录配置到硬盘上,可以极大节省系统开销,并避免将缓存写入临时文件。 -
proxy_cache_valid:缓存时间限制,该例子中是指HTTP响应状态码为200的响应缓存60分钟。 -
add_header X-Cache-Status:为响应添加一个头部,方便统计缓存状态。可以通过该响应头查看缓存是否命中。
请根据实际需求调整配置文件。