Varnish+Nginx搭建缓存服务器

jopen 11年前

一. varnish  1.安装pcre库,兼容正则表达式  # tar -zxvf pcre-8.10.tar.gz  # cd pcre-8.10  # ./configure --prefix=/usr/local/pcre  # make && make install  2.配置安装varnish  # tar -zxvf varnish-3.0.2.tar.gz  # cd varnish-3.0.2  # export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfig/  # ./configure --prefix=/usr/local/varnish  # make && make install  3.修改varnish配置文件  /usr/local/varnish/etc/varnish/default.vcl  # mv default.vcl default.vcl.bak  # vi cq.vcl  backend cqserver {  .host = "127.0.0.1";  .port = "8087";  .connect_timeout = 20s;  }  acl purge {  "localhost";  "127.0.0.1";  "192.168.1.0"/24;  }  sub vcl_recv {  if (req.request == "PURGE") {  if (!client.ip ~ purge) {  error 405 "Not allowed.";  }  return (lookup);  }  if (req.http.host ~ "^www.baidu.com") {  set req.backend = cqserver;  if (req.request != "GET" && req.request != "HEAD") {  return (pipe);  }  else{  return (lookup);  }  }  else {  error 404 "caoqing Cache Server";  return (lookup);  }  }  sub vcl_hit {  if (req.request == "PURGE") {  set obj.ttl = 0s;  error 200 "Purged.";  }  }  sub vcl_miss {  if (req.request == "PURGE") {  error 404 "Not in cache.";  }  }  (1)Varnish通过反向代理请求后端IP为127.0.0.1,端口为8087的web服务器,即nginx服务器监听端口;  (2)Varnish允许localhost、127.0.0.1、192.168.1.*三个来源IP通过PURGE方法清除缓存;  (3)Varnish对域名为www.baidu.com的请求进行处理,非www.baidu.com域名的请求则返回"caoqing Cache Server";  (4)Varnish对HTTP协议中的GET、HEAD请求进行缓存,对POST请求透过,让其直接访问后端Web服务器。  4.启动varnish  # cd /usr/local/varnish/sbin/  # ./varnishd -f /usr/local/varnish/etc/varnish/cq.vcl -s file,/var/varnish_cache,1G -T 127.0.0.1:2000 -a 0.0.0.0:80    二. nginx  1.安装nginx  # rpm -ivh zlib-devel-1.2.3-4.el5.i386.rpm  # tar zxvf nginx-1.4.1.tar.gz  # cd nginx-1.4.1  # ./configure --prefix=/usr/local/nginx --with-openssl=/usr/lib --with-pcre=/root/tool/pcre-8.10 --with-http_stub_status_module  # make && make install  2.启动nginx  # cd /usr/local/nginx/sbin  # ./nginx  3.修改ngnix配置文件  测试配置文件/usr/local/nginx/sbin/./nginx -t  # cd /usr/local/nginx/conf  # vi nginx.conf  #使用的用户和组  user  root root;  #制定工作衍生进程数(一般为CPU总核数两倍)  worker_processes  8;  #制定文件描述符数量  worker_rlimit_nofile 51200;  #指定错误日志存放路径  error_log  logs/error.log  #指定pid存放路径  pid        logs/nginx.pid;  event  {      #使用网络I/O模型       use epoll;  #允许的连接数       worker_connections  65535;  }    http {  #访问日志存放路径      access_log logs/access.log;  #开启gzip压缩      gzip             on;      gzip_min_length  1000;      gzip_proxied     expired no-cache no-store private auth;      gzip_types       text/plain text/css text/xml text/javascript application/x-javascript application/xml application/rss+xml application/xhtml+xml application/atom_xml;      gzip_disable "MSIE [1-6].(?!.*SV1)";  #限定PHP-CGI的连接、发送和读取的时间为300s      fastcgi_connect_timeout 300s;      fastcgi_send_timeout 300s;      fastcgi_read_timeout 300s;  #虚拟主机配置  server {  #监听端口         listen 8087;  #主机名称         server_name 127.0.0.1;  #google提供的DNS服务         resolver 8.8.8.8         location / {  #nginx作为HTTP代理服务器              proxy_pass http://$http_host$request_uri;              proxy_set_header Accept-Encoding '';              proxy_redirect          off;         }  }  }    三. 排错优化  1)修改环境变量  vi ~/.bashrc  PATH=$PATH:/usr/local/nginx/sbin:/usr/local/varnish/sbin:/usr/local/varnish/bin  export PATH  2)nginx启动与关闭  参数:  -v:查看版本  -V:查看配置模块  -t:查看配置文件是否正确  -c:制定其他配置文件  pkill -9 nginx  3)varnish启动与关闭  参数:   -u:以什么用户运行  -g:以什么组运行  -f:varnish配置文件   -a:绑定IP和端口  -s:varnish缓存位置和大小  -w:最小,最大线程和超时时间  -T:varnish管理端口,主要用来清除缓存  pkill varnishd  varnish服务动态加载配置文件   #varnishadm -T 127.0.0.1:2000  vcl.load vcl-name_vcl "配置文件路径" # vcl-name 这里可以任意取名   vcl.use vcl-name  vcl.show vcl-name #显示vcl-name配置文件内容   # varnishncsa -w /usr/local/varnish/logs/varnish.log  将输出日志写入到制定日志文件。  4)修改windows客户端  C:\Windows\System32\drivers\etc\hosts  192.168.1.202 www.baidu.com