ZBLOG

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

要让 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-Controlexpires:这两个指令用于控制客户端浏览器如何处理资源的缓存。

3. 检查和重启 Nginx

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

sudo nginx -t           # 检查配置文件语法是否正确
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

注册

已经有帐号?