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. spark提交模式

    spark基本的提交语句: ./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --depl ...

  2. FATFS 文件系统

    转载请注明出处:http://blog.csdn.net/qq_26093511/article/details/51706228 1.文件系统是什么? 负责管理和存储文件信息的软件机构称为文件管理系 ...

  3. 【转】深刻理解render 和 redirect_to

    由于最近老是在表单提交后出现没有反应的现象,发现是在action中的使用render 和 redirect_to的原因,于是就想搞清楚他两真正的区别在哪里,上一遍的blog也谈到了这二者的区别,但是有 ...

  4. Mac 远程连接Linux服务器及上传、下载命令

    1.使用ssh命令连接远程服务器主机 1.不设置端口,默认就是22 ssh root@192.168.18.129 1.1.设置端口例: ssh -p 22 root@192.168.18.1292. ...

  5. C语言学习笔记--接续符和转义符

    1.C语言中的接续符 (1)编译器将反斜杠剔除,跟在反斜杠后面的字符自动接续到前一行 (2)在接续单词时,反斜杠之后不能有空格,反斜杠下一行之前也不能有空格 (3)接续符适合在宏定义代码块时使用 #i ...

  6. java之格式化输出

    参考http://how2j.cn/k/number-string/number-string-foramt/320.html#nowhere 格式化输出 如果不使用格式化输出,就需要进行字符串连接, ...

  7. Metasploit和python两种安全工具的学习笔记

    Metasploit是个好东西 主要参考了<Metasploit渗透测试魔鬼训练营>这本书. 一.先用自己的靶机感受一下该工具的强大 linux靶机的ip如图 按照书上写的配置,如图 然后 ...

  8. Note: File Recipe Compression in Data Deduplication Systems

    Zero-Chunk Suppression 检测全0数据块,将其用预先计算的自身的指纹信息代替. Detect zero chunks and replace them with a special ...

  9. 【leetcode 3. 无重复字符的最长子串】解题报告

    思路:滑动窗口的思想 方法一:滑动窗口 int lengthOfLongestSubstring(string s) { /* 控制一个滑动窗口,窗口内的字符都是不重复的,通过set可以做到判断字符是 ...

  10. 浅谈JavaScript--事件委托与事件监听

    事件监听 该方法用于向指定元素添加事件句柄(代码块),且不会覆盖已存在的事件句柄. 即可以向同一个元素添加同一个事件多次. 添加事件 语法: element.addEventListener(even ...