要使用 Nginx 缓存上游服务器的 HTML、JS 和 CSS 文件,你需要在 Nginx 配置中设置代理缓存,并指定缓存的文件类型。下面是一个基本的示例配置,展示了如何实现这一点:
http {
# 定义缓存区域
proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m inactive=30d max_size=1g;
server {
listen 80;
server_name example.com; # 替换为你的域名
location / {
proxy_pass http://upstream_server; # 替换为你的上游服务器地址
proxy_cache my_cache; # 使用定义的缓存区域
proxy_cache_valid 200 30d; # 对于状态码200的响应,缓存有效期为30天
# 指定需要缓存的内容类型
add_header X-Cache $upstream_cache_status;
# 设置缓存控制
proxy_ignore_headers Cache-Control Expires;
# Caching based on content types
set $cache_control "no-cache";
if ($http_accept ~* "text/html") {
set $cache_control "max-age=31536000";
}
if ($http_accept ~* "application/javascript|text/css") {
set $cache_control "max-age=31536000";
}
add_header Cache-Control $cache_control;
}
}
}
配置解析:
proxy_cache_path:定义了一个用于存储代理缓存的路径和参数。
/tmp/cache
是实际存储的位置。levels=1:2
定义了目录结构。keys_zone=my_cache:10m
创建一个名为my_cache
的共享内存区域,用于存储元数据。inactive=30d
设置不活跃文件将在30天后被删除。max_size=1g
设置最大缓存大小为1GB。
server 块:配置虚拟主机。
location /:
- proxy_pass:将请求转发到上游服务器(请替换为你自己的上游服务器地址)。
- proxy_cache:启用指定名称 (
my_cache
) 的代理缓存。 - proxy_cache_valid:设置对于状态码200(成功)的响应,保持30天有效期。
add_header X-Cache:添加一个响应头,用于显示是否命中缓存。
proxy_ignore_headers Cache-Control Expires:忽略来自后端服务器的这些头,以便更好地控制客户端与 Nginx 的交互。
内容类型设置 (Cache-Control):
- 根据请求中的 Accept Header 确定文件类型并设置相应的
Cache-Control
响应头。这样可以根据接受到的内容类型进行适当的 caching 策略。
- 根据请求中的 Accept Header 确定文件类型并设置相应的
请根据具体需求调整这些配置,并确保 nginx.conf 文件位置正确无误。同时,不要忘记在修改配置后重启或重新加载 Nginx 服务使改动生效。
内容由零声教学AI助手提供,问题来源于学员提问