ZBLOG

如何让nginx强制缓存上游的html,js,css响应

要让 Nginx 强制缓存上游服务器(如应用服务器或其他服务)返回的 HTML、CSS 和 JS 响应,可以使用 Nginx 的反向代理缓存功能。以下是具体步骤:

1. 启用缓存功能

首先,你需要在你的 Nginx 配置中设置一个缓存区域。

  1. http {
  2. # 定义一个缓存区域
  3. proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
  4. server {
  5. listen 80;
  6. server_name yourdomain.com;
  7. location / {
  8. proxy_pass http://upstream_server; # 替换为你的上游服务器地址
  9. proxy_cache my_cache; # 使用刚才定义的缓存区域
  10. proxy_cache_valid 200 302 7d; # 对于状态码为 200 和 302 的响应,缓存 7 天
  11. proxy_cache_valid 404 1h; # 对于状态码为 404 的响应,缓存 1 小时
  12. # 可以根据需要添加更多配置,例如:
  13. proxy_set_header Host $host;
  14. proxy_set_header X-Real-IP $remote_addr;
  15. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  16. # 如果你想强制指定对特定类型文件的缓存,也可以这样做:
  17. set $cache_key $scheme$host$request_uri;
  18. location ~* \.(html|css|js)$ {
  19. add_header Cache-Control "public, max-age=604800"; # 设置 Cache-Control 响应头
  20. expires 7d; # 设置过期时间为7天
  21. proxy_cache_bypass $http_cache_control; # 忽略请求中的 cache-control
  22. try_files $uri @backend; # 尝试直接找到文件,如果没有则转发到后端服务
  23. }
  24. }
  25. location @backend {
  26. proxy_pass http://upstream_server; # 转发请求到上游服务器
  27. }
  28. }
  29. }

2. 配置解释

  • proxy_cache_path:定义了一个名为 my_cache 的缓存区域,存储在 /var/cache/nginx 中。
  • proxy_pass:将请求转发到上游服务器。请确保替换 http://upstream_server 为实际的上游地址。
  • proxy_cache_valid:指定不同状态码的响应有效期。
  • add_header Cache-Controlexpires:这两个指令用于控制客户端浏览器如何处理资源的缓存。

3. 检查和重启 Nginx

保存配置文件并检查语法是否正确,然后重启 Nginx:

  1. sudo nginx -t # 检查配置文件语法是否正确
  2. sudo systemctl restart nginx # 重启 Nginx 服务以使更改生效

4. 测试

使用浏览器开发者工具(F12)查看网络请求的响应头,确认是否有 X-Cache, Cache-Control, 和 Expires 等头信息,以确保请求被成功地从缓存中提供。

通过以上步骤,你就可以让 Nginx 强制缓存来自上游服务器的 HTML、CSS 和 JS 响应,从而提高网站性能和用户体验。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22162

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?