要让 Nginx 强制缓存上游服务器(如应用服务器或其他服务)返回的 HTML、CSS 和 JS 响应,可以使用 Nginx 的反向代理缓存功能。以下是具体步骤:
1. 启用缓存功能
首先,你需要在你的 Nginx 配置中设置一个缓存区域。
http {
# 定义一个缓存区域
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://upstream_server; # 替换为你的上游服务器地址
proxy_cache my_cache; # 使用刚才定义的缓存区域
proxy_cache_valid 200 302 7d; # 对于状态码为 200 和 302 的响应,缓存 7 天
proxy_cache_valid 404 1h; # 对于状态码为 404 的响应,缓存 1 小时
# 可以根据需要添加更多配置,例如:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 如果你想强制指定对特定类型文件的缓存,也可以这样做:
set $cache_key $scheme$host$request_uri;
location ~* \.(html|css|js)$ {
add_header Cache-Control "public, max-age=604800"; # 设置 Cache-Control 响应头
expires 7d; # 设置过期时间为7天
proxy_cache_bypass $http_cache_control; # 忽略请求中的 cache-control
try_files $uri @backend; # 尝试直接找到文件,如果没有则转发到后端服务
}
}
location @backend {
proxy_pass http://upstream_server; # 转发请求到上游服务器
}
}
}
2. 配置解释
proxy_cache_path
:定义了一个名为my_cache
的缓存区域,存储在/var/cache/nginx
中。proxy_pass
:将请求转发到上游服务器。请确保替换http://upstream_server
为实际的上游地址。proxy_cache_valid
:指定不同状态码的响应有效期。add_header Cache-Control
和expires
:这两个指令用于控制客户端浏览器如何处理资源的缓存。
3. 检查和重启 Nginx
保存配置文件并检查语法是否正确,然后重启 Nginx:
sudo nginx -t # 检查配置文件语法是否正确
sudo systemctl restart nginx # 重启 Nginx 服务以使更改生效
4. 测试
使用浏览器开发者工具(F12)查看网络请求的响应头,确认是否有 X-Cache
, Cache-Control
, 和 Expires
等头信息,以确保请求被成功地从缓存中提供。
通过以上步骤,你就可以让 Nginx 强制缓存来自上游服务器的 HTML、CSS 和 JS 响应,从而提高网站性能和用户体验。
内容由零声教学AI助手提供,问题来源于学员提问