第八章 Nginx服务器的缓存机制【笔记】
来源:互联网 发布:汉斯季默 知乎 编辑:程序博客网 时间:2024/05/19 14:02
本章涉及内容:
- Web缓存技术的基础知识
- Nginx服务器基于Proxy Store的缓存机制
- Nginx服务器基于memcached的缓存机制
- Nginx服务器基于Proxy Cache的缓存机制
- Nginx与Squid服务器组合的配置
8.1、Web缓存技术简述
将动态网页转换成静态网页,本地保存网页的副本,这些副本有过期时间限制。
Web缓存技术的优点是很明显的。由于客户端的部分请求内容直接从Web服务器处获取,该技术减轻了后端服务器的负载,同时也减少了Web服务器与后端服务器之间的网络流量,从而减轻了网络拥塞,同时还能减小数据传输延迟,有效降低客户访问的延迟。
8.2、404错误驱动Web缓存
...location /{...root /myweb/server/;#主目录error_page 404=200 /errpage$request_uri; #404定向到/errpage目录下}location /errpage/ {...internal;#该目录不能通过外部链接直接访问alias /home/html/;proxy_pass http://backend/;#后端upstream地址或源地址proxy_set_header Accept-Encoding ""; #后端不返回压缩(gzip/deflate)数据proxy_store on;#指定Nginx将代理返回的文件保存proxy_store_access user:rw group:rw all:r; #配置缓存数据的访问权限proxy_temp_path /myweb/server/tmp; #配置临时目录,该目录要和 /myweb/server/在同一硬盘分区内}...
8.3、资源不存在驱动Web缓存
...#其他配置location /{...#其他配置root /home/html/;internal; #配置该目录不能通过外部链接直接访问alias /myweb/server/;proxy_set_header Accept-Encoding ""; #配置后端不返回压缩(gzip或deflate)数据proxy_store on; #指定nginx将代理返回的文件保存proxy_store_access user:rw group:rw all:r ; #配置缓存数据的访问权限proxy_temp_path /myweb/server/tmp; #配置临时目录,该目录要和/myweb/server/在同一硬盘分区内if(!-f $request_filename) #判断请求资源是否存在{proxy_pass http://backend/; #配置后端upstream地址或源地址}}
通过if条件判断
8.4、基于memcached的缓存机制的6个指令
HTTP模块中有一ngx_http_memcached_module模块
该指令用于配置memcached服务器 的地址
1、memcached_pass address;
address 为memcached服务器的地址。支持IP+端口的地址或者域名地址。可以使用upstream指令配置一个memcached服务器组
2、memcached_connect_timeout指令
该指令用于配置连接memcached服务器的超时时间
memcached_connect_timeout time;
time为设置的超时时间。默认60s 建议改时间不要超过75s
3、memcached_read_timeout指令
该指令配置Nginx服务器向memcached服务器发出两个read请求之间的等待超时时间。
memcached_read_timeout time;
默认值60s
4、memcached_send_timeout指令
该指令配置Nginx服务器向memcached服务器发出两次write请求之间的等待超时时间,如果在该时间内没有进行数据传输。连接将会被关闭
memcached_send_timeout time;
默认值60s
5、memcached_buffer_size指令
该指令用于配置Nginx服务器用于接收memcached服务器响应数据的缓存区大小
memcached_buffer_size size;
size 设置缓存区大小,一般是所在平台的内存页大小的倍数。
memcached_buffer_size 4k|8k;
6、memcached_next_upstream指令
该指令配置一组memcached服务器的情况下使用。服务器组中各memcached服务器的访问规则遵循upstream指令配置的轮询规则。
memcached_next_upstream status ...;
status 为设置的memcached服务器返回状态,可以是一个或多个
error 在建立连接、向memcached服务器发送请求或读取响应头时服务器发生连接错误。
timeout:超时
invalid_header, memcached服务器返回的响应头为空或者无效
not_found, memcached服务器未找到对应的键值对
off 无法将请求发送给memcached服务器
...#其他配置server {location /{...#其他配置set $memcached_key "$uri?$args";memcached_pass 192.168.1.4:8080;error_page 404 502 504= @fallback;}location @fallback {proxy_pass http://backend;}}
8.5、Proxy Cache缓存机制
Proxy Cache缓存机制的一个缺陷是,它没有实现自动清理磁盘上缓存源数据功能。因此在长时间使用过程中会对服务器存储造成一定的压力
...#其他配置http{...#其他配置proxy_cache_path /myweb/server/proxycache levels=1:2 max_size=2m inactive=5mloader_sleep=1m; keys_zone=MYPROXYCACHE:10m #配置缓存数据存放路径和Proxy Cache使用的内存Cache空间proxy_temp_path /myweb/server/tmp; #配置响应数据的临时存放目录server {...#其他配置location /{...proxy_pass http://www.myweb.name/;proxy_cache MYPROXYCACHE; #配置使用MYPROXYCACHE这个keys_zoneproxy_cache_valid 200 302 1h; #配置200状态和302状态的响应缓存1小时proxy_cache_valid 301 1d; #配置301状态的响应缓存1天proxy_cache_valid any 1m; #配置其他状态的数据缓存1分钟}}}
8.6、Nginx与Squid组合
Squid服务本身不支持在单台服务器同一端口(例如要反向代理Web必须指定80端口)下运行多个进程。这个的话就需要给每个Squid服务分配一台服务器设置。这样非常浪费资源。
8.6.1 Squid服务器的配置
将多个Squid服务器安装同一台服务器上的不同目录上。并配置不同监听端口
/squid0 监听在 squid_server_ip:10010
/squid1 监听在 squid_server_ip:10011
/squid2 监听在 squid_server_ip:10012
其中squid_server_ip是部署Squid服务器的IP地址
8.6.2Nginx服务器配置
user www www;worker_process 10;error_log /usr/local/nginx/logs/nginx_error.log;pid /usr/local/nginx/nginx.pid;worker_rlimit_nofile 51200;events {use epoll;worker_connections 51200;}http{include mime.types;default_type application/octet-stream;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;#配置Squid服务器组upstream squid_server{server squid_server_ip:10010;server squid_server_ip:10011;server squid_server_ip:10012;}#gzip on;server {listen 80;server_name myweb;#将客户端请求转向Squid服务器组处理location / {proxy_pass http://squid_server;proxy_redirect off;proxy_set_header Host $host:80;proxy_set_header X-Real_IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}}
8.7、基于第三方模块ncache的缓存机制
ncahe是新浪公司的开源产品。作为Nginx服务器的一个HTTP模块进行开发,以实现更好的兼容性和扩展性。
- 第八章 Nginx服务器的缓存机制【笔记】
- Nginx服务器的缓存机制
- 三分钟看懂Nginx服务器的缓存原理和机制
- 19.Nginx 的缓存机制
- 应用服务器的缓存机制
- Nginx的slab page内存缓存机制
- 代理s3的nginx缓存服务器配置
- nginx 缓存机制
- nginx缓存机制构建
- nginx 缓存机制
- nginx 缓存服务器
- Nginx缓存服务器配置
- nginx 配置图片缓存服务器,nginx.conf的配置
- 服务器 缓存机制
- Nginx学习笔记七Nginx的Web缓存服务
- Nginx学习笔记七Nginx的Web缓存服务
- Nginx学习笔记七Nginx的Web缓存服务
- Nginx Proxy Cache的slab page内存缓存机制
- builder模式实例
- Django+uwgis+nginx部署
- Slipped Conditions
- 这些改成中文名的前端框架,你还能认识几个?
- Luogu2831/UOJ265[NOIP2016D2T3] 愤怒的小鸟【状压DP】
- 第八章 Nginx服务器的缓存机制【笔记】
- opencv学习——画轮廓
- pycharm破解方式
- JavaScript中的事件委托
- Elasticsearch-2.2.0安装
- Glide获取图片宽高以及setImageDrawable和setImageBitmap区别
- Hadoop中利用自身类实现json格式转换为对象。
- Java中的锁
- malloc/free与new/delete的区别