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命令的服务中。