用nginx图片缓存服务器
图片的存储硬件
把图片存储到什么介质上? 如果有足够的资金购买专用的图片服务器硬件或者 NAS 设备,那么简单的很; 如果上述条件不具备,只想在普通的硬盘上存储,首先还是要考虑一下物理硬盘的实际处理能力。是 7200 转的还是 15000 转的,实际表现差别就很大。是选择 ReiserFS 还是 Ext3 ,怎么也要测试一下吧? 创建文件系统的时候 Inode 问题也要加以考虑,选择合适大小的 inode size ,在空间和速度上做取舍,同时防患于未然,注意单个文件系统下文件个数别达到极限。
图片存储的技巧
图片服务器当前用年份来划分,每年增加两台服务器,亦可是加两块硬盘;因为旧数据2006和2007年的数据基本上是没有变化的,图片不存在修改,如果细心定制,那么旧图片服务器的硬盘99%塞满是可以的,旧数据的容量基本上不会大幅增长,小小预留1-2G空间就可以了.
单独的图片服务器域名
比如yahoo.com 图片服务器用了 yimg.com 的域名,这样可以减少上行的头信息,应用服务器也不用检查权限.
单独多个图片服务器
无论从管理上,还是从性能上看,只要有可能,尽量部署独立的图片服务器。在 Web 服务器上就可以有针对性的进行配置优化。比如在选择web服务器时,只考虑处理图片的效率.
图片共享
如果不想在几台机器间同步所有图片,只用 NFS 模式共享一下即可。注意软、硬连接可能带来的问题,以及 NFS 特定的传输速度。
采用操作系统层分布式文件系统本身的同步功能
采用应用层分布式文件系统同步方案:FastDFS、MogileFS、Hadoop HDFS
采用应用层第三方软件同步方案:csync2+inotify、rsync、unison、DRBD、tsync
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
用nginx图片缓存服务器的更多相关文章
- Varnish,Nginx搭建缓存服务器
Varnish,Nginx搭建缓存服务器 一. varnish 1.安装pcre库,兼容正则表达式 # tar -zxvf pcre-8.10.tar.gz # cd pcre-8.10 # ./co ...
- Nginx做缓存服务器
Nginx做缓存服务器 Nginx配置 1.主配置/etc/nginx/nginx.conf worker_processes 1; events { worker_connections 1024; ...
- 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 ...
- nginx图片缓存服务器配置实战
1.图片目录设置: 假定服务器主目录为nginx的默认目录:/usr/local/nginx-0.8.32/html/ 图片存放目录为:/usr/local/nginx-0.8.32/html/SD ...
- Nginx配置缓存服务器
Nginx为静态资源配置缓存服务器对网站性能提供很可观. 1.配置 接下来我看如何配置: 我的环境是在同一台机器上配置了一个用openresty搭建的反向代理,上游服务器(后端服务器)是本机的ngin ...
- Nginx 搭建图片缓存服务器-转
文章:https://waver.me/2019/04/11/Nginx-Cache-Server/ 参考: Nginx 配置详解Nginx 简易教程Nginx 配置总结
- 用Nginx搭建CDN服务器方法-开启Nginx缓存与镜像,自建图片服务器
利用Nginx的proxy_cache搭建缓存服务器一:编译ngx_cache_purge1.Nginx的Proxy_cache是根据Key值md5哈希存储缓存,支持任意的Key,例如你可以根据”域名 ...
- 搭建Nginx图片服务器
搭建Nginx图片服务器 Part-I 安装Nginx 安装PCRE 下载 ngx_cache_purge 并解压,用来清除缓存 下载Nginx并解压 cd nginx-1.7.7 编译,--pref ...
- 使用nginx缓存服务器上的静态文件
一.nginx缓存的优点 如图所示,nginx缓存,可以在一定程度上,减少源服务器的处理请求压力. 因为静态文件(比如css,js, 图片)中,很多都是不经常更新的.nginx使用proxy_cach ...
随机推荐
- Jersey的异常处理
Jersey框架为我们提供了更为通用异常处理方式.通过实现ExceptionMapper接口并使用@Provider注解将其定义为一个Provider,可以实现通用的异常的面向切面处理,而非针对某一个 ...
- django HTTP请求(Request)和回应(Response)对象
Django使用request和response对象在系统间传递状态.—(阿伦)当一个页面被请示时,Django创建一个包含请求元数据的 HttpRequest 对象. 然后Django调入合适的视图 ...
- 修改 Analysis Service 服务器模式
原网址:http://cathydumas.com/2012/04/23/changing-an-analysis-services-instance-to-tabular-mode/ Say you ...
- Codeforces Round #198 (Div. 2) —— D
昨天想了一下D题,有点思路不过感觉很麻烦,就懒得去敲了: 今天上午也想了一下,还是没有结果,看了一下官方题解,证明得很精彩: 这道题目其实就是一道裸地最大上升子序列的题: 看到这里,直接怒码···· ...
- 李洪强iOS开发Swift篇—07_函数
李洪强iOS开发Swift篇—07_函数 一.函数的定义 (1)函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } (2)形参列表的格式 ...
- 用js判断操作系统和浏览器类型
判断操作系统和浏览器的js代码 navigator.userAgent:userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值. navigator.pla ...
- leetcode面试准备:Contains Duplicate I && II
1 题目 Contains Duplicate I Given an array of integers, find if the array contains any duplicates. You ...
- bzoj2257
不难发现其实这个捣鼓过程就是一个辗转相减所以最小燃料是瓶容量的最小公约数然后穷举约数即可 ..] of longint; n,k,x,i,m,j,t:longint; procedure sort(l ...
- JIRA Cannot Start Due to 'unable to clean the cache directory: /opt/jira/plugins/.osgi-plugins/felix'
Symptoms After restarting JIRA, the following error appeared: JIRA Startup Failed You cannot access ...
- ImageSwitcher 右向左滑动的实现方式
ImageSwitcher is;...is.setInAnimation(this, android.R.anim.slide_in_left);is.setOutAnimation(this, a ...