varnish 一款 HTTP 加速器   缓存的目的还是为了降低后面apache的压力,照web服务器的硬件能力,apache撑死大概3000个左右连接,瓶颈应该还是在内存上。曾经多次被大量连接挂死。
varnish的日志比较怪异,一段时间来都没有在google上找到解决方法,日志里总是出现127.0.0.1来的访问,还不少,还有很多各个字段都是null的情况。对访问日志统计造成一些麻烦。
于是在前面再加一个nginx,采用nginx除了能支持高并发以外,还有一个看中的就是日志格式可以很容易地构造,想做成啥样就能做成啥样。
nginx上做两个虚拟主机,一个虚拟主机用作运行状态查看,另一个做proxy到varnish。varnish跑在127.0.0.1:8080上。
nginx官网上说是做proxying without caching,但实际观察下来,似乎也是有cache的。实际上在同一时刻,外部来的HTTP连接数远大于proxy到varnish的连接数。
用nginx的另一个考虑,也为以后访问量进一步增大后,可能需要增加的第二台缓存服务器做简单负载均衡的准备。
       upstream mysite.cn {
           server 127.0.0.1:8080 ;
          # server 192.168.11.1:80;  今后可能的第二台cache
       }
       
       server
       {
               #第一个虚拟主机,用于varnish和nginx运行状态监测
               listen       80;
               server_name  cache.mysite.cn;
               index index.htm index.html index.php;
               root  /web/htdocs;
               location / {
                    index infov.txt;
                    allow   192.168.0.0/16;
                    deny    all;
               }
               location /status {
                        stub_status             on;
                        access_log              off;
                        allow   192.168.0.0/16;
                        deny    all;
               } 

       }
       server
       {
               #第二个虚拟主机,proxy到后面的varnish
               listen       80;
               client_max_body_size 50M;
               server_name  .mysite.cn;
               index index.htm index.html index.php;
               root  /web/htdocs;
               location / {
                   proxy_pass 
http://mysite.cn;
                   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;
                   client_max_body_size 50m;
                   client_body_buffer_size 256k;
                   proxy_connect_timeout 10;
                   proxy_send_timeout 15;
                   proxy_read_timeout 15;
                   proxy_buffer_size 4k;
                   proxy_buffers 4 32k;
                   proxy_busy_buffers_size 64k;
                   proxy_temp_file_write_size 64k;
               }
               
               #location ~ .*\.php?$
               #{
               #        include conf/fcgi.conf;      
               #        fastcgi_pass  127.0.0.1:10080;
               #        fastcgi_index index.php;
               #}
       }