Nginx做网站缓存
Posted 专注着
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx做网站缓存相关的知识,希望对你有一定的参考价值。
因为最近一直在学习nginx 服务器的知识,在网络中查询了一些资料,自己做了一些实例,在此做上记录,以便参考。
下面先给出完整的实例配置代码:
# user用来定义nginx的用户组
#user www;
# 设置nginx的进程数,(建议为当前系统的核心数)
worker_processes 2;
error_log logs/error.log;
#进程文件
pid logs/nginx.pid;
events
#单个进程最大连接数(最大连接数=连接数*进程数)
worker_connections 1024;
#设定http服务器
http
#文件扩展名与文件类型映射表
include mime.types;
#默认文件类型
default_type application/octet-stream;
#日志输出格式
log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$status $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for" "$host"'
#默认编码
charset utf-8;
access_log logs/access.log main;
#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,
#如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
sendfile on;
#长连接超时时间,单位是秒
keepalive_timeout 180;
#压缩数据设置 START
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
# Some version of IE 6 don't handle compression well on some mime-types,
# so just disable for them
gzip_disable "MSIE [1-6].(?!.*SV1)";
# Set a vary header so downstream proxies don't send cached gzipped
# content to IE6
gzip_vary on;
#压缩数据设置完成 END
#缓存设置 START
#开启缓存
proxy_buffering on;
proxy_cache_valid an 10m;
#缓存文件路径
proxy_cache_path data/cache levels=1:2 keys_zone=mycache:8m max_size=1000m inactive=600m;
#缓存临时文件路径
proxy_temp_path data/temp;
proxy_buffer_size 4k;
proxy_buffers 100 8k;
#缓存设置 END
#设置反向代理
upstream mbp_mapp.com #服务器集群的名称
server 127.0.0.1:2048 weight=5;
#虚拟主机的配置
server
#监听端口
listen 8086 ;
#域名可以有多个,用空格隔开
server_name localhost;
#开启ssl
#ssl off;
#配置证书位置
#ssl_certificate ssl/ca/server.crt;
#ssl_certificate_key ssl/ca/server.key;
location / #将请求转发给对应服务器
root html;
index index.html index.htm;
#虚拟主机的配置
server
#监听端口
listen 8086 ;
access_log logs/mapp.log main;
error_log logs/mapp_error.log;
#域名可以有多个,用空格隔开
server_name 192.168.31.228;
location /
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://mbp_mapp.com/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
#设置该虚拟机的缓存
proxy_cache mycache;
proxy_cache_valid 100;
#代理设置
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
access_log logs/localhost_8843_access.log;
1. 在这个配置中关于缓存最重要的配置有如下( 打开缓存器):
#缓存设置 START
#开启缓存
proxy_buffering on;
proxy_cache_valid an 10m;
#缓存文件路径
proxy_cache_path data/cache levels=1:2 keys_zone=mycache:8m max_size=1000m inactive=600m;
#缓存临时文件路径
proxy_temp_path data/temp;
proxy_buffer_size 4k;
proxy_buffers 100 8k;
#缓存设置 END
这段配置文件,主要开启了缓存,并设置缓存的大小,下面对缓存的属性做一些说明:
proxy_buffering
语法:proxy_buffering on|off
默认值:proxy_buffering on
上下文:http, server, location
该指令开启从后端被代理服务器的响应内容缓冲.
如果缓冲区开启,nginx假定被代理的后端服务器会以最快速度响应,并把内容保存在由指令proxy_buffer_size
和 proxy_buffers
指定的缓冲区里边.
如果响应内容无法放在内存里边,那么部分内容会被写到磁盘上.
如果缓冲区被关闭了,那么响应内容会按照获取内容的多少立刻同步传送到客户端
nginx不尝试计算被代理服务器整个响应内容的大小,nginx能从服务器接受的最大数据,是由指令proxy_buffer_size
指定的.
proxy_cache_valid
语法:proxy_cache_valid reply_code [reply_code ...] time;
默认值:None
使用字段:http, server, location
为不同的应答设置不同的缓存时间
语法:proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size];
默认值:None
使用字段:http
指令指定缓存的路径和一些其他参数,缓存的数据存储在文件中。缓存的文件名和key为代理URL的MD5 码。levels参数指定缓存的子目录数
proxy_buffer_size
语法:proxy_buffer_size the_size
默认值:proxy_buffer_size 4k/8k
上下文:http, server, location
该指令设置缓冲区大小,从被代理的后端服务器取得的响应内容,会先读取放置到这里.
小的响应header通常位于这部分响应内容里边.
默认来说,该缓冲区大小等于指令 proxy_buffers
所设置的;但是,你可以把它设置得更小.
proxy_buffers
语法:proxy_buffers the_number is_size;
默认值:proxy_buffers 8 4k/8k;
上下文:http, server, location
该指令设置缓冲区的大小和数量,从被代理的后端服务器取得的响应内容,会放置到这里. 默认情况下,一个缓冲区的大小等于页面大小,可能是4K也可能是8K,这取决于平台
2. 在虚拟服务器中使用缓存#设置该虚拟机的缓存
proxy_cache mycache;
proxy_cache_valid 100;
然后访问服务器,会发现在在data/cache文件夹中多了一个文件,文件如下:
我们查看缓存文件内容,会发现,文件内容中缓存了页面信息,具体如下:
然而这个页面正是我访问的界面,这里我就不给我我的页面源码。
到这里使用Nginx缓存页面信息就做完了。具体一些指令的用法,后续会更新,
如果有什么疑问,欢迎留言!
以上是关于Nginx做网站缓存的主要内容,如果未能解决你的问题,请参考以下文章