ZBLOG

使用nginx缓存上游的html,js,css这三种类型的文件

要使用 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;
        }
    }
}

配置解析:

  1. proxy_cache_path:定义了一个用于存储代理缓存的路径和参数。

    • /tmp/cache 是实际存储的位置。
    • levels=1:2 定义了目录结构。
    • keys_zone=my_cache:10m 创建一个名为 my_cache 的共享内存区域,用于存储元数据。
    • inactive=30d 设置不活跃文件将在30天后被删除。
    • max_size=1g 设置最大缓存大小为1GB。
  2. server 块:配置虚拟主机。

  3. location /

    • proxy_pass:将请求转发到上游服务器(请替换为你自己的上游服务器地址)。
    • proxy_cache:启用指定名称 (my_cache) 的代理缓存。
    • proxy_cache_valid:设置对于状态码200(成功)的响应,保持30天有效期。
  4. add_header X-Cache:添加一个响应头,用于显示是否命中缓存。

  5. proxy_ignore_headers Cache-Control Expires:忽略来自后端服务器的这些头,以便更好地控制客户端与 Nginx 的交互。

  6. 内容类型设置 (Cache-Control)

    • 根据请求中的 Accept Header 确定文件类型并设置相应的 Cache-Control 响应头。这样可以根据接受到的内容类型进行适当的 caching 策略。

请根据具体需求调整这些配置,并确保 nginx.conf 文件位置正确无误。同时,不要忘记在修改配置后重启或重新加载 Nginx 服务使改动生效。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?