首页
导航
博客
电子书
算法
众创
代码
随贴
关于我们
您好,欢迎来到码863代码分享网! 请
[登录]
/
[注册]
搜 索
标题:
*
140
字
TAG标签:
(用空格隔开)
30
字
恢复历史版本:
请选择分类
html
python
javascript
php
sql
c
c++
c#
java
plain
所有人可见
仅自己可见
编辑器:UEditor
编辑器:TinyMCE
编辑器:Editor.md
HTML转MD
HTML转MD2
<h1><a href="http://www.360doc.com/content/12/1225/09/834950_256115746.shtml" _src="http://www.360doc.com/content/12/1225/09/834950_256115746.shtml">http://www.360doc.com/content/12/1225/09/834950_256115746.shtml</a> </h1><p><br/></p><h1><span style="FONT-SIZE: 29px">使用Nginx的proxy_cache缓存取代Varnish</span></h1><p> 鉴于网站的图片过多,而且大部分都是缩略图,文件又非常小,非常容易造成NFS机的压力很大,很纠结。<br/> 刚开始使用过Varnish V2.1.5,上线后,负载很低,但是图片显示时,会出现延迟的情况,经常出现叉烧包的问题,调整过相应的参数,还是无效,最终只能放弃(如有童鞋知道原因,欢迎与我联络,非常感谢)。<br/> Nginx作为强大的Web服务器,我们一直在用,值得依赖。然而对于缓存部分,却了解太少,这次正好使用了它的proxy_cache模块,非常好用,下面简单的介绍一下配置:<br/> <strong>一、下载 ngx_cache_purge</strong><br/> ngx_cache_purge模块,用于清除指定 URL的缓存,非常实用。</p><blockquote><p> # wget http://labs.frickle.com/files/ngx_cache_purge-1.3.tar.gz<br/> # tar zxvf ngx_cache_purge-1.3.tar.gz </p></blockquote><p><strong> 二、重新编译Nginx(根据实际情况而定)</strong></p><blockquote><p> # cd nginx-0.8.52<br/> # ./configure –prefix=/usr/local/nginx –user=acc –group=acc –add-module=../ngx_cache_purge-1.3 –with-http_ssl_module -<br/> -with-http_sub_module –with-http_dav_module –with-http_flv_module –with-http_gzip_static_module –with-http_stub_status_module –<br/> http-proxy-temp-path=/var/nginx/proxy –http-fastcgi-temp-path=/var/nginx/fastcgi –http-client-body-temp-path=/var/nginx/client –w<br/> ith-debug <br/> # make<br/> # mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-old<br/> # cp objs/nginx /usr/local/nginx/sbin/</p></blockquote><p><strong> 三、创建文件夹</strong></p><blockquote><p> # mkdir /tmp/proxy_temp_dir<br/> # mkdir /tmp/proxy_cache_dir<br/> # chmod 777 /tmp/proxy_temp_dir /tmp/proxy_cache_dir</p></blockquote><p><strong> 四、修改Nginx配置文件</strong></p><blockquote><p># vi /usr/local/nginx/conf/nginx.conf<br/> user addcn addcn;<br/> # 8核CPU<br/> worker_processes 8;<br/> worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;</p><p> error_log logs/error.log;</p><p> pid logs/nginx.pid;</p><p> worker_rlimit_nofile 65535;<br/> events {<br/> use epoll;<br/> worker_connections 65535;<br/> }</p><p> http {<br/> include mime.types;<br/> default_type application/octet-stream;</p><p> access_log logs/access.log main;</p><p> server_names_hash_bucket_size 128;<br/> client_header_buffer_size 32k;<br/> large_client_header_buffers 4 32k;<br/> client_max_body_size 8m;</p><p> sendfile on;<br/> tcp_nopush on;<br/> server_tokens off;</p><p> keepalive_timeout 60;<br/> fastcgi_intercept_errors on;</p><p> client_body_buffer_size 512k;<br/> proxy_connect_timeout 10;<br/> proxy_read_timeout 60;<br/> proxy_send_timeout 10;<br/> proxy_buffer_size 16k;<br/> proxy_buffers 4 64k;<br/> proxy_busy_buffers_size 128k;<br/> proxy_temp_file_write_size 128k;</p><p> # fastcgi<br/> fastcgi_connect_timeout 300;<br/> fastcgi_send_timeout 300;<br/> fastcgi_read_timeout 300;<br/> fastcgi_buffer_size 64k;<br/> fastcgi_buffers 4 64k;<br/> fastcgi_busy_buffers_size 128k;<br/> fastcgi_temp_file_write_size 128k;</p><p> # gzip<br/> gzip on;<br/> gzip_min_length 1k;<br/> gzip_buffers 4 16k;<br/> gzip_http_version 1.0;<br/> gzip_comp_level 2;<br/> gzip_types text/plain application/x-javascript text/css application/xml;<br/> gzip_vary on;<br/> # proxy_temp_path和proxy_cache_path指定的路径必须在同一分区<br/> proxy_temp_path /tmp/proxy_temp_dir;<br/> # 设置Web缓存区名称为cache_one,内存缓存空间大小为1000MB,3天清理一次缓存,硬盘缓存空间大小为100GB。<br/> proxy_cache_path /tmp/proxy_cache_dir levels=1:2 keys_zone=cache_one:1000m inactive=3d max_size=100g;<br/> # 后台请求服务器<br/> upstream backend_server {<br/> server 192.168.1.2:8000 weight=1 max_fails=2 fail_timeout=30s;<br/> server 192.168.1.3:8000 weight=1 max_fails=2 fail_timeout=30s;<br/> }</p><p> server {<br/> # listen port<br/> listen 8000;</p><p> server_name img.591rmb.info<br/> charset utf-8;</p><p> # root<br/> include /usr/local/nginx/conf/module/path_params.conf;<br/> root /var/www/<br/> index index.html index.htm;</p><p> # blocked<br/> location ~ .*\.(gif|jpg|png|jpeg|bmp|swf)$ {<br/> proxy_next_upstream http_502 http_504 error timeout invalid_header;<br/> proxy_cache cache_one;<br/> proxy_cache_valid 200 304 30d;<br/> proxy_cache_key $host$uri$is_args$args;<br/> proxy_set_header Host $host;<br/> proxy_set_header X-Forwarded-For $remote_addr;<br/> proxy_pass http://backend_server;</p><p> expires max;<br/> access_log off;<br/> }<br/> #用于清除缓存,假设一个URL为http://192.168.8.42/test.txt,通过访问http://192.168.8.42/purge/test.txt就可以清除该URL的缓存<br/> location ~ /purge(/.*)<br/> {<br/> #设置只允许指定的IP或IP段才可以清除URL缓存。<br/> allow 127.0.0.1;<br/> allow 192.168.0.0/16;<br/> deny all;<br/> proxy_cache_purge cache_one $host$1$is_args$args;<br/> } <br/> }</p></blockquote><p><strong> 五、启动Nginx</strong></p><blockquote><p> # /usr/local/nginx/sbin/nginx -t<br/> the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok<br/> configuration file /usr/local/nginx/conf/nginx.conf test is successful<br/> # /usr/local/nginx/sbin/nginx</p></blockquote><p> <strong>六、参考文献:</strong><br/> 使用Nginx的proxy_cache缓存功能取代Squid[原创] ( http://blog.s135.com/nginx_cache )</p><p> <strong>总结:</strong><br/> Varnish3最新版还没有试用,后续找时间试一下,使用proxy_cache后,图片访问一切正常^-^。</p>
CopyRight 2002~2023 精通2100网 联系邮箱:qqtxt@163.com
版权所有:精通2100网
湘ICP备2023018646号-1
MYSQl共执行 4 个查询,用时 0.002291202545166 秒,PHP脚本用时 0.005435 秒,占用内存 0.550 MB,Gzip 已启用