1、图片目录设置:

假定服务器主目录为nginx的默认目录:/usr/local/nginx-0.8.32/html/

图片存放目录为:/usr/local/nginx-0.8.32/html/SD/images

图片缓存目录为:/usr/local/nginx-0.8.32/html/SD/images_cache

图片临时目录为:/usr/local/nginx-0.8.32/html/SD/images_temp

SD意义为项目中使用的代称,可以忽略其意义

在nginx缓存配置成功之后,如果用户成功获取了一次图片文件,就会缓存到images_cache目录下

2、nginx服务器配置:

所需软件包如下:

nginx-0.8

ngx_cache_purge-1.0

pcre-8.20

  1. tar zxvf pcre-8.20.tar.gz cd pcre-8.20/
  2. ./configure
  3. make && make install
  4. cd ../
  5. tar zxvf ngx_cache_purge-1.0.tar.gz
  6. tar zxvf nginx-0.8.32.tar.gz
  7. cd nginx-0.8.32/
  8. ./configure --user=www --group=www \
  9. --add-module=../ngx_cache_purge-1.0 \
  10. --prefix=/usr/local/webserver/nginx \
  11. --with-http_stub_status_module \
  12. --with-http_ssl_module \
  13. --with-openssl=/usr/local/openssl-1.0.1
  14. make && make install

如果在nginx执行make的过程中出现如下错误:

  1. make[1]: *** [objs/addon/ngx_cache_purge-1.2/ngx_cache_purge_module.o] Error 1
  2. make[1]: Leaving directory `/root/nginx-1.0.5'
  3. make: *** [build] Error 2

则是由于nginx版本的问题。我之前用的是比较新的nginx1.2版本, 结果总是出现上述Error信息,于是更换回旧版本之后Error消失。至于具体原因,暂未深入研究。

3、对nginx进行配置

  1. #需要建立www用户和www用户组
  2. user  www www;
  3. worker_processes  8;
  4. error_log  /usr/local/nginx-0.8.32/logs/error.log crit;
  5. pid  /usr/local/nginx-0.8.32/nginx.pid;
  6. events {
  7. use epoll;
  8. worker_connections  65535;
  9. }
  10. http {
  11. include       mime.types;
  12. default_type  application/octet-stream;
  13. charset  utf-8;
  14. server_names_hash_bucket_size 128;
  15. client_header_buffer_size 32k;
  16. large_client_header_buffers 4 32k;
  17. client_max_body_size 300m;
  18. sendfile on;
  19. tcp_nopush     on;
  20. keepalive_timeout 60;
  21. tcp_nodelay on;
  22. client_body_buffer_size  512k;
  23. proxy_connect_timeout    5;
  24. proxy_read_timeout       60;
  25. proxy_send_timeout       5;
  26. proxy_buffer_size        16k;
  27. proxy_buffers            4 64k;
  28. proxy_busy_buffers_size 128k;
  29. proxy_temp_file_write_size 128k;
  30. gzip on;
  31. gzip_min_length  1k;
  32. gzip_buffers 4 16k;
  33. gzip_http_version 1.1;
  34. gzip_comp_level 2;
  35. gzip_types text/plain application/x-javascript text/css application/xml;
  36. gzip_vary on;
  37. #注:images_temp和images_cache指定的路径必须在同一分区
  38. proxy_temp_path  /usr/local/nginx-0.8.32/html/SD/images_temp;
  39. #设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
  40. proxy_cache_path  /usr/local/nginx-0.8.32/html/SD/images_cache  levels=1:2   keys_zone=cache_one:200m inactive=1d max_size=30g;
  41. server {
  42. listen       80;
  43. server_name  192.168.0.146;
  44. location / {
  45. proxy_cache cache_one;
  46. #对不同的HTTP状态码设置不同的缓存时间
  47. proxy_cache_valid  200 304 12h;
  48. #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
  49. proxy_cache_key $host$uri$is_args$args;
  50. proxy_set_header Host  $host;
  51. proxy_set_header X-Forwarded-For  $remote_addr;
  52. proxy_pass http://192.168.0.146:8080;
  53. log_format cache '***$time_local '  '***$upstream_cache_status '  '***Cache-Control: $upstream_http_cache_control ' '***Expires: $upstream_http_expires ' '***"$request" ($status) ' '***"$http_user_agent" ';
  54. access_log  /usr/local/nginx-0.8.32/logs/cache.log cache;
  55. expires      1d;
  56. }
  57. #用于清除缓存,假设一个URL为http://192.168.8.42/test.txt,通过访问http://192.168.8.42/purge/test.txt就可以清除该URL的缓存。
  58. location ~ /purge(/.*) {
  59. #设置只允许指定的IP或IP段才可以清除URL缓存。
  60. allow       127.0.0.1;
  61. allow       192.168.0.0/16;
  62. deny    all;
  63. proxy_cache_purge    cache_one   $host$1$is_args$args;
  64. }
  65. #扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。
  66. location ~ .*\.(php|jsp|cgi)?$ {
  67. proxy_set_header Host  $host;
  68. proxy_set_header X-Forwarded-For  $remote_addr;
  69. proxy_pass http://192.168.0.146:8080;
  70. }
  71. access_log  off;
  72. }
  73. server{
  74. listen 8080;
  75. server_name 192.168.33.243;
  76. location / {
  77. root /usr/local/webapp;
  78. }
  79. access_log off;
  80. }
  81. }

修改完成之后,可以在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

4、测试及验证

在nginx/sbin目录下执行./nginx即可启动nginx

在浏览器里直接输入ip地址之后显示如下界面即表示成功启动:

在图片存放目录images下面存放了如下图片:

在浏览器里输入请求图片的地址:http://192.168.0.146/webapp/images/03.jpg即可成功显示图片:

此时我们可以看到在images_cache下面生成了缓存文件:

文件存放路径是根据我们前面配置的key的映射方式生成的:proxy_cache_key $host$uri$is_args$args;

经过对存放的多张图片的多次请求之后,我们就会发现因映射key而产生的多个文件夹目录:

另外,我们还可以根据nginx.conf文件中配置的日志来确定我们的请求是否命中缓存:

第一次请求的时候,我们可以看到miss

第二次请求的时候,我们就可以看到hit命中了

****************************************************************************************************************

server {
listen 80;
server_name douco.com;
#access_log logs/host.access.log main; location / {
index index.php index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://192.168.253.137:80;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
index index.php index.html index.htm;
proxy_cache cache_one;
proxy_cache_valid 200 304 12h;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://192.168.253.137:80;
access_log /var/www/logs/cache.log cache;
expires 1d;
}
location ~ /purge(/.*) {
allow 127.0.0.1;
#allow 192.168.253.136;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
}

nginx图片缓存服务器配置实战的更多相关文章

  1. 用nginx图片缓存服务器

    图片的存储硬件 把图片存储到什么介质上? 如果有足够的资金购买专用的图片服务器硬件或者 NAS 设备,那么简单的很: 如果上述条件不具备,只想在普通的硬盘上存储,首先还是要考虑一下物理硬盘的实际处理能 ...

  2. 【T电商 3】Nginx的Http(图片)服务器配置+ftp上传使用说明

    在前两篇博客中提到了搭建Nginx和Ftp服务器,在本篇博客,主要是介绍Nginx的配置文件的使用,怎样修改配置文件使其成为一个图片服务器. 一.Nginx图片服务器配置 <span style ...

  3. 【Ts 3】Nginx的Http(图片)服务器配置+ftp上传使用说明

    在前两篇博客中提到了搭建Nginx和Ftp服务器,在本篇博客,主要是介绍Nginx的配置文件的使用,怎样修改配置文件使其成为一个图片服务器. 一.Nginx图片服务器配置 <span style ...

  4. 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 ...

  5. Nginx图片防盗链【实战】

    访问我的博客 前言 博主目前在一家原创小说网站公司工作,由于站内的作品全部是原创,于是乎不可避免地会被一些盗版网站爬取盗版,对于防盗版一直没有很好的对策,让公司很是苦恼. 最近去一些盗版网站上搜索我们 ...

  6. Nginx+proxy_cache图片缓存

    搭建图片缓存机制的原理在于减少数据库的负担并加快静态资源的响应. 步骤: 1. vim /usr/local/nginx/conf/nginx.conf 2. http{     ...     .. ...

  7. nginx实现负载均衡、缓存功能实战

    nginx实现负载均衡.缓存功能实战 什么是正向代理?应用场景:翻墙 什么是反向代理?例如:haproxy和nginx   Nginx实现反向代理 nginx代理基于是ngx_http_proxy_m ...

  8. Linux实战教学笔记38:企业级Nginx Web服务优化实战(下)

    四,Nginx站点目录及文件URL访问控制 4.1 根据扩展名限制程序和文件访问 Web2.0时代,绝大多数网站都是以用户为中心多的,例如:bbs,blog,sns产品,这几个产品都有一个共同特点,就 ...

  9. nginx图片处理

    前言 不管一个系统或网站的大与小,都存在相应的图片处理,生成缩略图.为图片加水印等等,如果涉及到APP端,这个图片的处理需求变得更加重要了,因为在目前看来,客户端的屏幕大小不一,会导致以下问题: 1. ...

随机推荐

  1. 江苏省大学生程序设计竞赛(JSCPC)赛后感

    仔细的算了一下,这是我第6次参加与acm有关的比赛了,每一次的经历,在我看来都是一次对自己能力的认识与评估,身边学计算机专业的同龄人对这项比赛的热爱,专注,勇气以及所获得的成就让要好好努力,更要加倍付 ...

  2. 给JZ2440开发板重新分区

    转自:http://mp.weixin.qq.com/s?__biz=MzAxNTAyOTczMw==&mid=2649328035&idx=1&sn=7d3935cc05d3 ...

  3. oracle sql 语句 示例

    --oracle 用户对象的导入导出 exp devimage/oracle@172.xx.x.xx/TESTDB owner='devimage' file=d:/devimage.dmp log= ...

  4. numpy.zeros(shape, dtype=float, order='C')

    numpy.zeros Return a new array of given shape and type, filled with zeros. Parameters: shape : int o ...

  5. tomcat jsp 数字串传值异常问题

    1.在下面的jsp内嵌java代码去除num之前,有某Controller已经有了操作:      request.getSession().setAttribute("num", ...

  6. 进击的菜鸟问题1(设置checkbox全选)

    问题:设置页面标签属性时,常常使用jquery.attr("","");在设置checkbox属性时,会出现操作设置checkbox属性后,无法清除,导致第二次 ...

  7. elasticsearch2.x插件之一:kibana

    介绍: 要说kibana,就不得不先说一下logstash.这里呢,先要讲个故事.故事是开头是这样的,Logstash早期曾经自带了一个特别简单的logstash-web用来查看ES中的数据,其功能太 ...

  8. Tomcat+Nginx实现动静分离

    Tomcat是我们经常用的服务器,轻便快捷,但是数据量大的时候,会影响访问.响应速度,这时Nginx就出现了. Nginx可做反向代理.负载均衡.动态与静态资源的分离的工作,这里我们就用它来做动静分离 ...

  9. sklearn保存模型

    # View more python tutorials on my Youtube and Youku channel!!! # Youtube video tutorial: https://ww ...

  10. vue中v-if 与v-show的区别

    v-if vs v-show v-if 是“真正的”条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建. v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做—— ...