公司想把图片从阿里云的服务器上迁移到自己的服务器,顺便建立一套新的图片存储系统。
开始打算使用FastDFS,但是FastDFS有自己的文件名生成规则,我们网站已经有了很多图片,如果每个图片都重新生成的话,工作量比较大。由于时间原因,临时采用了nginx来实现。
采用了3台服务器,每台服务器上都安装了nginx。用户访问相应图片时,根据自己定义的nginx location的hash规则,2012年的图片映射到一台机器上,2013年的映射到另一台机器上。
由于nginx已经支持了web缓存,考虑到图片可能会被临时替换,所以需要一个可以清除缓存的组件ngx_cache_puge。
- #现在并解压
- wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz
- tar zxvf ngx_cache_purge-2.0.tar.gz
- #在安装nginx的时候 增加其组件
- ./configure --add-module=../ngx_cache-2.0 --prefix=/usr/local/nginx
- make
- make install
#现在并解压 wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz tar zxvf ngx_cache_purge-2.0.tar.gz #在安装nginx的时候 增加其组件 ./configure --add-module=../ngx_cache-2.0 --prefix=/usr/local/nginx make make install
我开始装的是purge-1.0在make的时候报错,后来考虑是nginx版本不兼容的问题,换成了2.0之后就不报错了。
废话不多说,直接上nginx的配置文件。
入口nginx配置 负责分发到两天机器上
- #配置缓存目录 两个目录必须在同一分区
- proxy_temp_path /home/data0/proxy_temp_path;
- proxy_cache_path /home/data0/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
- #两天图片服务器上面都通过nginx部署了web服务
- upstream pic1{
- server 192.168.2.6:8080;
- }
- upstream pic2{
- server 192.168.2.2:8080;
- }
- server {
- listen 8080;
- server_name localhost;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- #这个要放在前面,以免被提前拦截了,用来清除缓存的
- location ~ /purge(/.*){
- #allow 127.0.0.1;
- #allow 192.168.2.6;
- #deny all;
- proxy_cache_purge cache_one $host$1$is_args$args;
- }
- location ~ /{
- proxy_cache cache_one;
- proxy_cache_valid 200 304 12h;
- proxy_cache_valid 301 302 1m;
- proxy_cache_valid any 1m;
- #如果是图片路径总包含/2013/ 则映射到pic1
- proxy_cache_key $host$uri$is_args$args;
- if ( $request_uri ~* "\w*\/2013\/\w*\.(ico|gif|bmp|jpg|jpeg|png|swf)$"){
- proxy_pass http://pic1;
- }
- if ( $request_uri ~* "\w*\/2012\/\w*\.(ico|gif|bmp|jpg|jpeg|png|swf)$"){
- proxy_pass http://pic2;
- }
- proxy_pass http://pic2;
- }
- }
#配置缓存目录 两个目录必须在同一分区 proxy_temp_path /home/data0/proxy_temp_path; proxy_cache_path /home/data0/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; #两天图片服务器上面都通过nginx部署了web服务 upstream pic1{ server 192.168.2.6:8080; } upstream pic2{ server 192.168.2.2:8080; } server { listen 8080; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #这个要放在前面,以免被提前拦截了,用来清除缓存的 location ~ /purge(/.*){ #allow 127.0.0.1; #allow 192.168.2.6; #deny all; proxy_cache_purge cache_one $host$1$is_args$args; } location ~ /{ proxy_cache cache_one; proxy_cache_valid 200 304 12h; proxy_cache_valid 301 302 1m; proxy_cache_valid any 1m; #如果是图片路径总包含/2013/ 则映射到pic1 proxy_cache_key $host$uri$is_args$args; if ( $request_uri ~* "\w*\/2013\/\w*\.(ico|gif|bmp|jpg|jpeg|png|swf)$"){ proxy_pass http://pic1; } if ( $request_uri ~* "\w*\/2012\/\w*\.(ico|gif|bmp|jpg|jpeg|png|swf)$"){ proxy_pass http://pic2; } proxy_pass http://pic2; } }
图片服务器nginx配置,这个类似fastdfs中的storage节点,会映射到服务器的/home/www路径
- server {
- listen 8080;
- server_name localhost;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- location / {
- root /home/www;
- index index.html index.htm;
- }
server { listen 8080; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root /home/www; index index.html index.htm; } }
这样,通过路径就能访问到图片服务器上的图片。并且会对图片做12小时的缓存。当你需要清除缓存的时候,只要在图片的路径前面加一个/purge,再执行下即可。如图片路径http://img.naomi.cn/pic/2012/100.jpg 那么清除缓存的路径就是http://img.naomi.cn/purge/pic/2012/100.jpg。
相关推荐
Nginx_Web_高性能 Nginx_Web_高性能 Nginx_Web_高性能 Nginx_Web_高性能
纯手工搭建Linux Nginx MySQL PHP WEB服务器
nginx高性能web服务器.zip nginx高性能web服务器.pdf
这是开源的nginx WEB服务器,拥有强大的并发能力,多个大型门户网站都在使用
利用Nginx实现网站负载均衡_刘振宇利用Nginx实现网站负载均衡_刘振宇利用Nginx实现网站负载均衡_刘振宇利用Nginx实现网站负载均衡_刘振宇利用Nginx实现网站负载均衡_刘振宇
Nginx高性能Web服务器详解(完整版)pdf下载,深入了解Nginx
基于nginx的web服务器搭建手册,集nginx搭建,优化,远程登录为一体的完备的搭建手册
实战Nginx 高性能web服务器,取代Apache的高性能web服务器
海康威视摄像头web端显示方案(Nginx环境测试)
1、高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例 内容:概述Nginx的背景知识和简单的入门实例。 2、高性能Web服务器Nginx的配置与部署研究(2)Nginx入门级配置与部署及“Hello World” 内容:...
折叠Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler 站点开发的,已经在一些俄罗斯的大型网站上运行多年,相当的稳定。 Nginx性能稳定、功能丰富、运维简单、处理...
Nginx高性能Web服务器实战教程+高清+完整书签,
《Nginx高性能Web服务器详解》全面介绍了当前Internet上流行的一款开放源代码的Web服务器——Nginx。全书一共分为四大部分,分别从入门、功能、实现和应用等四个方面对Nginx服务器的知识进行完整阐述,从而满足广大...
如何利用nginx实现基于uri的负载均衡文档
Nginx高性能Web服务器详解 Nginx高性能Web服务器详解 Nginx高性能Web服务器详解
Nginx + uwsgi + web.py 搭建web服务器, 也包含一整套python服务器后台框架代码,简单方便,容易搭建。
《Nginx高性能Web服务器详解》全面介绍了当前Internet上流行的一款开放源代码的Web服务器——Nginx。全书一共分为四大部分,分别从入门、功能、实现和应用等四个方面对Nginx服务器的知识进行完整阐述,从而满足广大...
Nginx的安装实现web功能,包含实现安装 调试 使用
使用Nginx提升网站访问速度
Nginx 高性能web服务器详解、包括安装、配置、Linux内核优化、Nginx的相关优化等