博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx缓存设置
阅读量:5917 次
发布时间:2019-06-19

本文共 3885 字,大约阅读时间需要 12 分钟。

  hot3.png

一、静态缓存

目的:缓存nginx服务器的静态文件。如css,js,htm,html,jpg,gif,png,flv,swf,这些文件都不是经常更新。便于缓存以减轻服务器的压力。
实现:nginx proxy_cache可以将用户的请缓存到本地一个目录,当下一个请求时可以直接调取缓存文件,就不用去后端服务器去取文件了。
配置:打开配置文件/usr/local/nginx/conf/nginx.conf

user  www www;worker_processes 2;error_log  /var/log/nginx_error.log  crit;worker_rlimit_nofile 65535;events{  use epoll;  worker_connections 65535;}http{  include       mime.types;  default_type  application/octet-stream;  server_names_hash_bucket_size 128;  client_header_buffer_size 32k;  large_client_header_buffers 4 32k;  client_max_body_size 8m;  sendfile on;  tcp_nopush     on;  keepalive_timeout 0;  tcp_nodelay on;  fastcgi_connect_timeout 300;  fastcgi_send_timeout 300;  fastcgi_read_timeout 300;  fastcgi_buffer_size 64k;  fastcgi_buffers 4 64k;  fastcgi_busy_buffers_size 128k;  fastcgi_temp_file_write_size 128k;  ##cache##  proxy_connect_timeout 5;  proxy_read_timeout 60;  proxy_send_timeout 5;  proxy_buffer_size 16k;  proxy_buffers 4 64k;  proxy_busy_buffers_size 128k;  proxy_temp_file_write_size 128k;  proxy_temp_path /home/temp_dir;  proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;  ##end##  gzip    on;  gzip_min_length   1k;  gzip_buffers   4 8k;  gzip_http_version  1.1;  gzip_types   text/plain application/x-javascript text/css  application/xml;  gzip_disable "MSIE [1-6]\.";  log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '             '$status $body_bytes_sent "$http_referer" '             '"$http_user_agent" $http_x_forwarded_for';  upstream appserver {        server 192.168.1.251;  }  server {        listen       80 default;        server_name www.gangpao.com;        location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {              proxy_pass http://appserver;              proxy_redirect off;              proxy_set_header Host $host;              proxy_cache cache_one;              proxy_cache_valid 200 302 1h;              proxy_cache_valid 301 1d;              proxy_cache_valid any 1m;              expires 30d;        }        location ~ .*\.(php)(.*){             proxy_pass http://appserver;             proxy_set_header        Host $host;             proxy_set_header        X-Real-IP $remote_addr;             proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;        }        access_log /usr/local/nginx/logs/www.gangpao.com.log;  }}

红色部分是配置缓存的参数。

说明:
1、http段设置。
proxy_temp_path /home/temp_dir;设置临时目录
proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;设置缓存目录为二级目录,共享内存区大小,非活动时间,最大容量,注意临时目录要跟缓存目录在同一个分区。
2、server段设置
请求静态文件设置。
proxy_cache cache_one;设置缓存共享内存区块,也就是keys_zone名称。
proxy_cache_valid 200 302 1h;设置http状态码为200,302缓存时间为1小时。
expires 30d;设置失期时间,为30天
请求动态文件设置。
proxy_pass http://appserver;不进行缓存,直接转到后端服务器。
测试:当客户端发起http请求时在服务器上会产一个缓存文件如

/home/cache/0/b9/8bd841b1c44ee5b91457eb561e44eb90 

二、动态缓存

fastcgi_cache作用是缓存fastcgi生成的内容,很多情况是php生成的动态内容
fastcgi_cache缓存减少了nginx与php的通信次数,更减轻了php和数据库的压力。

#定义缓存存放的文件夹fastcgi_cache_path /tt/cache levels=1:2 keys_zone=NAME:2880m inactive=2d max_size=10G;#定义缓存不同的url请求fastcgi_cache_key "$scheme$request_method$host$uri$arg_filename$arg_x$arg_y";server {listen 8080;server_name www.example .com;location / {root /www;index index.html index.htm index.php;}location ~ (|.php)$ {root /www;fastcgi_pass 127.0.0.1:9000;fastcgi_cache NAME;fastcgi_cache_valid 200 48h;fastcgi_cache_min_uses 1;fastcgi_cache_use_stale error timeout invalid_header http_500;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;include fastcgi.conf;#设置缓存的过程中发现无法获取cookie,经查需要定义这句话fastcgi_pass_header Set-Cookie;}log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';access_log /httplogs/access.log access;}

 

转载于:https://my.oschina.net/voole/blog/871928

你可能感兴趣的文章
[C#] 时间函数: 自1970.1.1起至今的毫秒数(与Java一致)
查看>>
JavaScript数据结构之队列结构
查看>>
视频直播之优化移动端WebRTC通信
查看>>
html 标题栏小图标 ,锚点,视频插入,音乐插入
查看>>
knockoutjs的某些坑总结
查看>>
JSON和JSONP (含jQuery实例)(share)
查看>>
用js实现读取出字符串中每个字符重复出现的次数?
查看>>
xcache的使用与配置
查看>>
msysGit管理GitHub代码
查看>>
快排(模板)
查看>>
Oracle replace函数使用
查看>>
干货:Web应用上线之前程序员应该了解的技术细节
查看>>
oracle中使用impdp数据泵导入数据提示“ORA-31684:对象类型已经存在”错误的解决......
查看>>
query.setFirstResult解析
查看>>
Windows7,网络连接错误: 依赖服务或组无法启动
查看>>
创业前需要知道的11件事
查看>>
CALayer2-创建新的层
查看>>
dom4j selectNodes
查看>>
最大流最小费用(模板)
查看>>
mysql中数据类型DECIMAL(M,D)的说明
查看>>