nginx 配置静态缓存及静态缓存文件没有生成的问题及解决方案

 更新时间:2023年11月27日 15:11:59   作者:靳某某。  
这篇文章主要介绍了nginx 配置静态缓存及静态缓存文件没有生成的问题及解决方案,本文分步骤结合实例代码给大家介绍的非常详细,需要的朋友可以参考下

nginx 配置静态缓存全教程 (以及静态缓存文件没有生成)

一、第一步定义一个缓存目录设置目录结构

在 http 模块下定义(keys_zone = 缓存区名:后面是缓存区大小 inactive 不活跃的文件多久清理 max_size 缓存区所占磁盘的上限 use_temp_path 默认关闭(有需要自己百度))

proxy_cache_path /path/your_cache_dir levels = 1:2 keys_zone=your_cache_name:10g inactive=1h max_size=20g use_temp_path=off; 

二、开启缓存

在 http、server、location 中开启代理缓存
举例在location中开启(将图片jscsshtml等放入缓存)

server {
    listen 8099;   #缓存端口或者缓存域名
    root /www/wwwroot/static/;
    index index.html;
        location ~*.\.(png|jpg|css|html)$ {
        	expires  30m;				#缓存过期时间在浏览器的缓存时间
            proxy_pass http://localhost:8100;		# 代理地址非缓存文件的访问地址,***必须加这个否则生成不来缓存这个***
            proxy_cache your_cache_name;    	#proxy_cache_path中定义的名字
            proxy_cache_valid 200 10m;				#把状态值为200的缓存10分钟
            proxy_cache_valid any 5m; 				#把状态值除来200的缓存5分钟
            proxy_cache_key "$host$request_uri"; 	#默认key
            proxy_cache_revalidate on;				#是否开启验证缓存的有效性关闭则缓存数据有变化依然请求缓存 开启则会请求新的
            proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;				#当后台出现错误时跳过
             add_header X-Proxy-Cache $upstream_cache_status;			#在头文件新增一个X-Proxy-Cache(自定义)验证缓存是否命中 Hit命中 miss 没有命中
        }
}
server {
    listen 8100; 		#正式的地址
    root /www/wwwroot/static/;
    index index.html; 
    # 其他配置...
}

注意事项
nginx 缓存叫代理缓存 应该是有两台以上的服务器。如果只有一台加不同的域名或者端口做区分。把后台服务器和缓存服务分开

缓存没有生成
1、文件夹是否有权限
2、是否设置了proxy_pass(只有走代理才会生成缓存)

Nginx缓存、静态文件缓存配置

Nginx静态Server基本配置

server {
	listen 80; #监听的端口
	server_name www.test.com; #监听的域名
	charset utf-8;#编码
	root /usr/local/static/www.test.com; #主目录
	index index.html index.htm;#欢迎页面
	}

静态文件缓存配置

http {
# 这个将为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,
# 建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓
存。
open_file_cache max=204800 inactive=20s;
# open_file_cache 指令中的inactive 参数时间内文件的最少使用次数,
# 如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个
# 文件在inactive 时间内一次没被使用,它将被移除。
open_file_cache_min_uses 1;
# 这个是指多长时间检查一次缓存的有效信息
open_file_cache_valid 30s;
# 默认情况下,Nginx的gzip压缩是关闭的, gzip压缩功能就是可以让你节省不
# 少带宽,但是会增加服务器CPU的开销哦,Nginx默认只对text/html进行压
缩 ,
# 如果要对html之外的内容进行压缩传输,我们需要手动来设置。
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css appl
ication/xml;
server {
listen 80;
server_name www.test.com;
charset utf-8;
root /data/www.test.com;
index index.html index.htm;
}
}

基础缓存配置

proxy_cache_path/path/to/cache levels=1:2 keys_zone=my_cache:10m
max_size=10g inactive=60m
use_temp_path=off;
server {
...
location / {
proxy_cache my_cache;
proxy_pass http://my_upstream;
}
}

配置参数说明

proxy_cache_path 命令中的参数及对应配置说明如下:
1. 用于缓存的本地磁盘目录是 /path/to/cache/
2. levels 在 /path/to/cache/ 设置了一个两级层次结构的目录。将大量的文件放置
在单个目录中会导致文件访问缓慢,所以针对大多数部署,我们推荐使用两级
目录层次结构。如果 levels 参数没有配置,则 Nginx 会将所有的文件放到同一
个目录中。
3. keys_zone 设置一个共享内存区,该内存区用于存储缓存键和元数据,有些类
似计时器的用途。将键的拷贝放入内存可以使 Nginx 在不检索磁盘的情况下快
速决定一个请求是 HIT 还是 MISS ,这样大大提高了检索速度。一个 1MB
的内存空间可以存储大约 8000个key,那么上面配置的 10MB 内存空间可以存
储差不多 80000 个 key。
4. max_size 设置了缓存的上限(在上面的例子中是 10G)。这是一个可选项;
如果不指定具体值,那就是允许缓存不断增长,占用所有可用的磁盘空间。当
缓存达到这个上线,处理器便调用 cache manager 来移除最近最少被使用的
文件,这样把缓存的空间降低至这个限制之下。
5. inactive 指定了项目在不被访问的情况下能够在内存中保持的时间。在上面的
例子中,如果一个文件在 60 分钟之内没有被请求,则缓存管理将会自动将其
在内存中删除,不管该文件是否过期。该参数默认值为 10 分钟(10m)。注
意,非活动内容有别于过期内容。 Nginx 不会自动删除由缓存控制头部指定的
过期内容(本例中 Cache-Control:max-age=120)。过期内容只有在 inactive
158静态文件服务
指定时间内没有被访问的情况下才会被删除。如果过期内容被访问了,那么
Nginx 就会将其从原服务器上刷新,并更新对应的inactive计时器。
6. Nginx 最初会将注定写入缓存的文件先放入一个临时存储区域,
use_temp_path=off命令指示 Nginx 将在缓存这些文件时将它们写入同一个目
录下。我们强烈建议你将参数设置为off来避免在文件系统中不必要的数据拷
贝。use_temp_path在 Nginx 1.7版本和 Nginx Plus R6中有所介绍。
最终,proxy_cache 命令启动缓存那些URL与location部分匹配的内容(本例中,
为 / )。你同样可以将proxy_cache命令添加到server部分,这将会将缓存应用到
所有的那些location中未指定自己的proxy_cache命令的服务中。

到此这篇关于nginx 配置静态缓存及静态缓存文件没有生成的问题及解决方案的文章就介绍到这了,更多相关nginx 配置静态缓存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于nginx没有跳转到upstream地址的解决

    关于nginx没有跳转到upstream地址的解决

    这篇文章主要介绍了关于nginx没有跳转到upstream地址的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

    教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤

    这篇文章主要介绍了利用 Nginx 服务搭建子域环境提升二维地图加载性能,本文分步骤通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-09-09
  • 很详细的Nginx配置说明

    很详细的Nginx配置说明

    这篇文章主要为大家分享了一篇很详细的Nginx配置说明,主要内容包括Nginx常用功能、Nginx配置文件结构,想要了解Nginx配置的朋友不要错过,参考一下
    2016-02-02
  • Nginx+Tomcat+Https 服务器负载均衡配置实践方案详解

    Nginx+Tomcat+Https 服务器负载均衡配置实践方案详解

    这篇文章主要介绍了Nginx+Tomcat+Https 服务器负载均衡配置实践方案的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • 503 service unavailable错误解决方案讲解

    503 service unavailable错误解决方案讲解

    这篇文章主要介绍了503 service unavailable错误解决方案讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • nginx主动健康检查功能实现

    nginx主动健康检查功能实现

    nginx_upstream_check_module是一个Nginx的第三方模块,它可以实现 Nginx的主动健康检查功能,本文将介绍一个基于 Nginx 的第三方模块 nginx_upstream_check_module,它可以实现 Nginx 的主动健康检查功能,可以帮助我们更加有效地管理后端服务器,需要的朋友可以参考下
    2023-05-05
  • nginx负载均衡配置,宕机自动切换方式

    nginx负载均衡配置,宕机自动切换方式

    这篇文章主要介绍了nginx负载均衡配置,宕机自动切换方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • linux下Nginx 0.8.40的安装方法

    linux下Nginx 0.8.40的安装方法

    这篇文章主要介绍了linux下Nginx 0.8.40的安装方法,需要的朋友可以参考下
    2014-11-11
  • Nginx服务器配置HTTPS nginx.config 配置文件(教程)

    Nginx服务器配置HTTPS nginx.config 配置文件(教程)

    下面小编就为大家分享一篇Nginx服务器配置HTTPS nginx.config 配置文件(教程),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Nginx作为反向代理时传递客户端IP的设置方法

    Nginx作为反向代理时传递客户端IP的设置方法

    因为nginx的优越性,现在越来越多的用户在生产环境中使用nginx作为前端,不管nginx在前端是做负载均衡还是只做简单的反向代理,都需要把日志转发到后端real server,以方便我们检查程序的各种故障
    2014-08-08

最新评论