用nginx图片缓存服务器

用nginx图片缓存服务器

图片的存储硬件

把图片存储到什么介质上? 如果有足够的资金购买专用的图片服务器硬件或者 NAS 设备,那么简单的很; 如果上述条件不具备,只想在普通的硬盘上存储,首先还是要考虑一下物理硬盘的实际处理能力。是 7200 转的还是 15000 转的,实际表现差别就很大。是选择 ReiserFS 还是 Ext3 ,怎么也要测试一下吧? 创建文件系统的时候 Inode 问题也要加以考虑,选择合适大小的 inode size ,在空间和速度上做取舍,同时防患于未然,注意单个文件系统下文件个数别达到极限。

图片存储的技巧

图片服务器当前用年份来划分,每年增加两台服务器,亦可是加两块硬盘;因为旧数据2006和2007年的数据基本上是没有变化的,图片不存在修改,如果细心定制,那么旧图片服务器的硬盘99%塞满是可以的,旧数据的容量基本上不会大幅增长,小小预留1-2G空间就可以了.

单独的图片服务器域名

比如yahoo.com 图片服务器用了 yimg.com 的域名,这样可以减少上行的头信息,应用服务器也不用检查权限.

单独多个图片服务器

无论从管理上,还是从性能上看,只要有可能,尽量部署独立的图片服务器。在 Web 服务器上就可以有针对性的进行配置优化。比如在选择web服务器时,只考虑处理图片的效率.

图片共享

如果不想在几台机器间同步所有图片,只用 NFS 模式共享一下即可。注意软、硬连接可能带来的问题,以及 NFS 特定的传输速度。

采用操作系统层分布式文件系统本身的同步功能

采用应用层分布式文件系统同步方案:FastDFSMogileFSHadoop HDFS

采用应用层第三方软件同步方案:csync2+inotify、rsyncunisonDRBDtsync

http服务器的选择

采用轻量级的Lighttpd、Nginx,不采用apache,apache最消耗内存.

Cache及反向代理

Squid

Lighttpd+mod_mem_cache

Nginx+ngx_cache_purge

数据压缩

HTTP HEADER的Accept-Encoding

客户端缓存

HTTP HEADER的Expires、Cache-Control、Etag、Last-Modified参数设置

应用层优化

图片按需生成、图片预先生成、根据应用场景降低图片分辨率

图片处理工具的选择

可能大多数网站都是选择 ImageMagick 做为基础库,如果图片处理量巨大,性能问题又怎能不考虑?

防盗链

图片相当占用资源,一定要做好防盗链

Nginx图片缓存服务器配置

Nginx缓存服务器配置所需软件包如下:

nginx-0.8

ngx_cache_purge-1.0

pcre-8.20

为了方便,直接使用lnmp环境。

1,  安装lnmp环境

wget -c http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz && tar zxvf lnmp1.0-full.tar.gz && cd lnmp1.0-full && ./centos.sh

2,  重新编译nginx,加入nginx缓存模块

tar zxvf ngx_cache_purge-1.0.tar.gz

将 ngx_cache_purge解压到nginx同一目录下。

cd nginx-0.8.32/

./configure --user=www --group=www --add-module=../ngx_cache_purge-1.0 --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6

make && make install

重启nginx服务的时候可能会出现如下错误:
[root@localhost   sbin]# ./nginx 
./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

处理如下:
x86 [root@localhost   sbin]# ln -s /usr/local/lib/libpcre.so.1 /lib
x64 [root@localhost   sbin]# ln -s /usr/local/lib/libpcre.so.1 /lib64

3,  缓存服务器配置

图片目录设置:

假定服务器主目录为nginx的默认目录:/home/wwwroot/www.images.com/

图片存放目录为:/home/wwwroot/www.images.com/images

图片缓存目录为:/home/wwwroot/www.images.com/images/images_cache

图片临时目录为:/home/wwwroot/www.images.com/images /images_temp

Nginx配置文件修改

Nginx.conf

user  www www;

worker_processes 2;

error_log  /home/wwwlogs/nginx_error.log  crit;

pid        /usr/local/nginx/logs/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.

worker_rlimit_nofile 51200;

events

{

use epoll;

worker_connections 51200;

}

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 50m;

sendfile on;

tcp_nopush     on;

keepalive_timeout 60;

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 256k;

client_body_buffer_size 512k;

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/wwwroot/www.images.com/images/images_temp;

proxy_cache_path /home/wwwroot/www.images.com/images/images_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;

gzip on;

gzip_min_length  1k;

gzip_buffers     4 16k;

gzip_http_version 1.0;

gzip_comp_level 2;

gzip_types       text/plain application/x-javascript text/css application/xml;

gzip_vary on;

gzip_proxied        expired no-cache no-store private auth;

gzip_disable        "MSIE [1-6]\.";

#limit_zone  crawler  $binary_remote_addr  10m;

server_tokens off;

#log format

log_format  access  ‘$remote_addr - $remote_user [$time_local] "$request" ‘

‘$status $body_bytes_sent "$http_referer" ‘

‘"$http_user_agent" $http_x_forwarded_for‘;

server

{

listen       80;

server_name www.lnmp.org;

index index.html index.htm index.php;

root  /home/wwwroot/default;

location ~ .*\.(php|php5)?$

{

try_files $uri =404;

fastcgi_pass  unix:/tmp/php-cgi.sock;

fastcgi_index index.php;

include fcgi.conf;

}

location /status {

stub_status on;

access_log   off;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires      30d;

}

location ~ .*\.(js|css)?$

{

expires      12h;

}

access_log  /home/wwwlogs/access.log  access;

}

include vhost/*.conf;

}

www.images.com.conf配置如下:

server

{

listen       80;

server_name www.images.com;

#             index index.html index.htm index.php default.html default.htm default.php;

#             root  /home/wwwroot/www.images.com;

access_log /home/wwwlogs/80pic.log;

location ~ /purge(/.*){

allow 192.168.206.0/24;

deny       all;

proxy_cache_purge content $host$1$is_args$args;

}

location ~ .*\.(php|php5)?$

{

try_files $uri =404;

fastcgi_pass  unix:/tmp/php-cgi.sock;

fastcgi_index index.php;

include fcgi.conf;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires      30d;

proxy_cache content;

proxy_cache_valid 200 304 301 302 10d;

proxy_cache_valid any 1d;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_cache_key $host$uri$is_args$args;

proxy_pass http://www.images.com:8080;

}

location ~ .*\.(js|css)?$

{

expires      12h;

}

access_log on;

}

server

{

listen 8080;

server_name www.images.com;

root /home/wwwroot/www.images.com/images/;

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires      30d;

access_log  /home/wwwlogs/8080pic.log;

}

access_log on;

}

修改完成之后,可以在nginx/sbin目录下执行./nginx -t命令来检查配置文件是否正确,当现实如下信息时即表示配置成功。

配置成功显示信息:

the configuration file /usr/local/nginx-0.8.32/conf/nginx.conf syntax is ok 
configuration file /usr/local/nginx-0.8.32/conf/nginx.conf test is successful

时间: 2024-10-17 10:21:41

用nginx图片缓存服务器的相关文章

Nginx 1.4.7图片缓存服务器

软件包版本: Nginx 1.4.7 Ngx_cache_purge-2.0 Openssl-1.0.1 Pcre-8.32 二.安装编译: a)         下载pcre-8.32.tar.gz      tar zvxf pcre-8.32.tar.gzcd pcre-8.32 && ./configure && make && make install b)         下载openssl-1.0.1.tar.gzcd openssl &

Varnish,Nginx搭建缓存服务器

一. 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/p

简单的图片裁剪服务器

自己写的一个简单的图片服务器,可以读取FastDFS上的图片,根据参数进行图片裁剪输出到前台 改项目可以上传图片到FastDFS,读取FastDFS上存储的图片,前面可以增加Varnish图片缓存服务器缓解图片裁剪压力 使用一个简单的Servlet实现 package com.imgcut.servlet; import java.io.IOException; import java.io.InputStream; import javax.servlet.ServletException;

(转)Nginx图片服务器

本文转至博客http://wenxin2009.iteye.com/blog/2117079 Nginx搭建图片服务器 Nginx下载地址:http://nginx.org/en/download.html 本例下载的是window版本nginx-1.6.1 以下是我本机操作说明: 下载完后,解压,并把它放到D:\tools\nginx-1.6.1,双击nginx.exe即可运行nginx.可通http://127.0.0.1访问到nginx欢迎界面,如下  也可在cmd中通过命令进行启停启动n

nginx js和jpg图片缓存

nginx js和jpg图片缓存设置 listen       80; server_name  xxxxx; index index.htm index.html; root  /to/path/; location ~ .*\.(js|css)?$ { expires 5d; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; valid_referers none blocked www.xxxx *.xxxxxx; if

搭建Nginx图片服务器

搭建Nginx图片服务器 Part-I 安装Nginx 安装PCRE 下载 ngx_cache_purge 并解压,用来清除缓存 下载Nginx并解压 cd nginx-1.7.7 编译,--prefix使用默认值,则nginx安装在/usr/local/nginx ./configure --user=www --group=www --add-module=../ngx_cache_purge-1.0 --with-http_stub_status_module --with-http_ss

nginx反代varnish缓存服务器实现后端amp动静分离架构

1.前端nginx做调度器及反代服务器,将用户的请求调度至后端的两台varnish,缓存调度算法使用一致性hash算法保证缓存命中率: 2.两台varnish反向代理用户请求至三个(组)后端主机,分别为存储静态资源(htm,html,css,js),应用程序服务器(可以部署wordpress或Discuz!),图片统一保存至图片服务器: 3.用户登录后,可以通过wordpress发布新的博文,并且可以上传图片: 4.如果后端主机全部宕机,varnish可以使用过期缓存响应客户端:        

使用nginx缓存服务器上的静态文件

一.nginx缓存的优点 如图所示,nginx缓存,可以在一定程度上,减少源服务器的处理请求压力. 因为静态文件(比如css,js, 图片)中,很多都是不经常更新的.nginx使用proxy_cache将用户的请求缓存到本地一个目录.下一个相同请求可以直接调取缓存文件,就不用去请求服务器了. 毕竟,IO密集型服务的处理是nginx的强项. 二.如何进行设置 先上个栗子: http{ proxy_connect_timeout 10; proxy_read_timeout 180; proxy_s

Nginx用为缓存服务器

Nginx 缓存组成 共享内存 数据定位 存储键和缓存对象的元数据 磁盘空间: 存储数据 nginx做为反向代理时,能够将来自upstream的响应缓存至本地,并在后续的客户端请求同样内容时直接从本地构造响应报文. proxy_cache 模块 为上游服务器提供缓存功能 当客户端再请求时先从缓存中找,找到直接发给客户端: proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m max_size=1G /data/nginx/