您的位置:

详解Nginx缓存静态资源

一、nginx静态资源访问完整配置

想要让Nginx缓存静态资源,首先需要进行Nginx配置。以下是Nginx静态资源访问完整配置的示例代码:

location /static/ {
    root /data/www;
    expires 7d;
}

该配置将被访问的URL路径设置为/static/,将静态文件存储在/data/www目录下,过期时间为7天。需要注意的是,该配置仅适用于静态资源文件,如CSS、JS、图片等。对于动态资源文件,需要进行其他配置。

二、nginx资源静态

Nginx可以将动态资源文件转化为静态资源文件,加快文件的读取速度。以下是Nginx资源静态的示例代码:

location / {
    proxy_pass http://backend/;
    proxy_cache_key "$scheme$request_method$host$request_uri";
    proxy_cache_valid 200 60m;
    proxy_cache_valid 404 1m;
}

首先,访问的URL路径被设置为根路径。然后,将动态资源传输给后端服务器,将该资源的相关信息作为缓存键,将缓存保留为60分钟,404错误的缓存保留为1分钟。

三、nginx代理静态资源

当Nginx作为代理服务器时,可以代理静态资源,以加快访问速度。以下是Nginx代理静态资源的示例代码:

location /static/ {
    proxy_pass http://backend/static/;
    proxy_cache_bypass $http_pragma;
    proxy_cache_revalidate on;
    proxy_cache_min_uses 3;
    proxy_cache_valid 200 60m;
}

该配置将/static/路径下的静态资源文件代理给后端服务器,并设置了缓存刷新机制。当用户使用Ctrl+F5刷新页面时,Nginx会请求更新缓存。

四、nginx缓存静态文件

为了进一步加快访问速度,Nginx可以将静态文件缓存到本地。以下是Nginx缓存静态文件的示例代码:

http {
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=static_cache:10m;
    server {
        location /static/ {
            proxy_pass http://backend/static/;
            proxy_cache static_cache;
            proxy_cache_valid 200 60m;
        }
    }
}

首先,在http块中设置Nginx的缓存路径和缓存区域。然后,在server块中配置缓存使用的区域和缓存的有效期。

五、nginx静态资源跨域

有时候,静态资源文件需要跨域使用,这时就需要配置Nginx进行跨域访问。以下是Nginx静态资源跨域的示例代码:

location /static/ {
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    proxy_pass http://backend/static/;
}

在设置URL路径后,配置Access-Control-Allow-Origin和Access-Control-Allow-Methods头,允许跨域HTTP访问。最后,将静态资源代理给后端服务器。

六、nginx静态资源缓存CDN

为了更快地加载资源,可以使用CDN来缓存静态资源。以下是Nginx静态资源缓存CDN的示例代码:

location /static/ {
    expires 7d;
    add_header Cache-Control "public";
    add_header X-Proxy-Cache $upstream_cache_status;
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=static_cache:10m;
    proxy_cache_key "$scheme$request_method$host$request_uri";
    proxy_cache_valid 200 60m;
    proxy_cache_bypass $http_pragma;
    proxy_cache_revalidate on;
    proxy_pass http://cdn.example.com/static/;
}

首先在location块中设置expires,将资源缓存在客户端。然后,在头部设置Cache-Control和X-Proxy-Cache。接下来是配置缓存路径、缓存键和缓存有效期。最后将静态资源代理给CDN服务。

七、nginx静态缓存配置

为了确保静态资源文件始终被缓存,可以使用Nginx静态缓存配置。以下是Nginx静态缓存配置的示例代码:

http {
    proxy_cache_path /data/nginx/cache/ keys_zone=one:10m;
    server {
        location / {
            proxy_cache one;
            proxy_cache_valid 200 1d;
        }
    }
}

在http块中设置Nginx的缓存路径和区域。然后在server块中,配置Nginx使用缓存并设置缓存有效期。

八、nginx不缓存静态资源

有时候,不希望缓存静态资源。以下是Nginx不缓存静态资源的示例代码:

location /static/ {
    proxy_no_cache 1;
    proxy_cache_bypass 1;
    proxy_pass http://backend/static/;
}

在设置URL路径后,配置不缓存静态资源的选项,不带缓存地将静态资源传给后端服务器。

九、springboot静态资源缓存配置

对于使用Spring Boot的应用程序,也可以配置静态资源缓存。以下是Spring Boot静态资源缓存配置的示例代码:

@Configuration
public class WebMvcConfg implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/")
                .setCacheControl(CacheControl.maxAge(365, TimeUnit.DAYS));
    }
}

在WebMvcConfigurer中,配置需要被缓存的静态资源路径和缓存有效期。

总结

Nginx缓存静态资源可以大大提高资源加载速度,同时也能减轻服务器的负担。根据不同的需求,可以进行不同的配置,达到最佳的效果。