利用nginx加速web访问

公司想把图片从阿里云的服务器上迁移到自己的服务器,顺便建立一套新的图片存储系统。

开始打算使用FastDFS,但是FastDFS有自己的文件名生成规则,我们网站已经有了很多图片,如果每个图片都重新生成的话,工作量比较大。由于时间原因,临时采用了nginx来实现。

 

采用了3台服务器,每台服务器上都安装了nginx。用户访问相应图片时,根据自己定义的nginx location的hash规则,2012年的图片映射到一台机器上,2013年的映射到另一台机器上。

 

由于nginx已经支持了web缓存,考虑到图片可能会被临时替换,所以需要一个可以清除缓存的组件ngx_cache_puge。

 

 

Linux代码 复制代码  收藏代码
  1. #现在并解压    
  2. wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz   
  3. tar zxvf ngx_cache_purge-2.0.tar.gz   
  4. #在安装nginx的时候 增加其组件   
  5. ./configure --add-module=../ngx_cache-2.0 --prefix=/usr/local/nginx   
  6. make    
  7. 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配置 负责分发到两天机器上

 

Linux代码 复制代码  收藏代码
  1. #配置缓存目录 两个目录必须在同一分区   
  2. proxy_temp_path /home/data0/proxy_temp_path;   
  3. proxy_cache_path /home/data0/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;   
  4.   
  5. #两天图片服务器上面都通过nginx部署了web服务   
  6. upstream pic1{   
  7.           server 192.168.2.6:8080;   
  8. }   
  9.   
  10. upstream pic2{   
  11.         server 192.168.2.2:8080;   
  12. }   
  13.   
  14. server {   
  15.         listen       8080;   
  16.         server_name  localhost;   
  17.   
  18.         #charset koi8-r;   
  19.   
  20.         #access_log  logs/host.access.log  main;   
  21.   
  22.         #这个要放在前面,以免被提前拦截了,用来清除缓存的   
  23.         location ~ /purge(/.*){   
  24.   
  25.   
  26.             #allow 127.0.0.1;   
  27.             #allow 192.168.2.6;   
  28.             #deny  all;   
  29.             proxy_cache_purge cache_one $host$1$is_args$args;   
  30.          }   
  31.   
  32. location ~ /{   
  33.   
  34.         proxy_cache cache_one;   
  35.         proxy_cache_valid 200 304 12h;   
  36.         proxy_cache_valid 301 302 1m;   
  37.         proxy_cache_valid any 1m;   
  38.   
  39.         #如果是图片路径总包含/2013/ 则映射到pic1   
  40.         proxy_cache_key $host$uri$is_args$args;   
  41.         if ( $request_uri ~* "\w*\/2013\/\w*\.(ico|gif|bmp|jpg|jpeg|png|swf)$"){   
  42.                 proxy_pass http://pic1;   
  43.          }   
  44.         if ( $request_uri ~* "\w*\/2012\/\w*\.(ico|gif|bmp|jpg|jpeg|png|swf)$"){   
  45.                 proxy_pass http://pic2;   
  46.          }   
  47.          proxy_pass http://pic2;   
  48.         }   
  49. }  
#配置缓存目录 两个目录必须在同一分区
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路径

 

 

Linux代码 复制代码  收藏代码
  1. server {   
  2.        listen       8080;   
  3.        server_name  localhost;   
  4.   
  5.        #charset koi8-r;   
  6.   
  7.        #access_log  logs/host.access.log  main;   
  8.   
  9.        location / {   
  10.            root   /home/www;   
  11.            index  index.html index.htm;   
  12.        }   
 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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Nginx是一款高性能的Web服务器,可以通过以下几个方面来加速网站: 1. 静态文件缓存:Nginx可以将静态文件(如图片、CSS、JavaScript等)缓存在内存中,减少服务器对磁盘的读取,从而提高网站的响应速度。 2. 负载均衡:Nginx可以作为反向代理服务器,将请求转发到多台后端服务器上,实现负载均衡,从而提高网站的并发处理能力。 3. 压缩传输:Nginx可以对传输的数据进行压缩,减少数据传输量,从而加快网站的加载速度。 4. Keepalive连接:Nginx可以通过Keepalive连接,将多个请求合并成一个TCP连接,从而减少TCP握手和挥手的开销,提高网络传输效率。 5. 开启HTTP/2:Nginx可以支持HTTP/2协议,该协议采用多路复用技术,可以同时传输多个请求和响应,从而提高网站的性能。 通过以上几个方面的优化,可以有效地提高网站的响应速度和性能。 ### 回答2: 通过Nginx加速网站是一种常见的方法,其主要原理是通过Nginx作为反向代理服务器,将静态资源缓存至内存中,从而提高网站的访问速度和性能。 首先,确保已经在服务器上安装Nginx,并正确配置了网站的域名、端口以及相关的SSL证书等。 接下来,需要对Nginx的配置文件进行相应的优化设置。在配置文件中,可以修改以下参数来提高网站的加速效果: 1. 配置Gzip压缩:使用gzip可以对响应的内容进行压缩,减少数据传输的大小,加快网站的加载速度。可以配置将需要进行Gzip压缩的文件类型及压缩比例。 2. 配置缓存:通过设置缓存参数,将网站的静态资源缓存至内存或硬盘中,减少对后端应用服务器的请求。可以设置缓存的过期时间、大小、缓存返回状态码等。 3. 配置反向代理:通过配置反向代理,将请求分发至后端的应用服务器,实现负载均衡,提高网站的访问速度和稳定性。 4. 开启HTTP/2协议:HTTP/2是与HTTP/1.1有很大不同的新一代协议,可以提供更快的页面加载速度。在Nginx中,需要对监听的端口进行相应的配置。 5. 优化TCP参数:通过调整TCP的相关参数,如TCP窗口大小、缓冲区等,可以提高网站的传输速率和稳定性。 除了以上的配置优化,还可以结合其他的工具和技术来进一步加速网站,如使用CDN(内容分发网络)来分发静态资源、使用SSL加速等。 总之,通过正确配置Nginx的相关参数,结合一些优化技巧和工具,可以显著提升网站的加载速度和性能,为用户带来更好的访问体验。 ### 回答3: 通过使用Nginx服务器,可以通过以下几种方式来加速网站。 首先,可以通过启用HTTP2协议来提高网站的加载速度。HTTP2协议使用多路复用技术,能够同时传输多个文件,减少了请求的延迟时间。 其次,使用Nginx的gzip模块来启用Gzip压缩,可以减小传输的数据量。当客户端请求网页时,Nginx会自动对文件进行gzip压缩,并在传输过程中解压缩,从而加快网页加载速度。 另外,可以配置Nginx的缓存机制来加速网站。在Nginx的配置中,可以设置缓存过期时间、缓存目录等参数,当用户请求同一页面时,Nginx会直接从缓存中返回页面,避免了重新动态生成页面的过程。 还可以使用Nginx的反向代理来加速网站。通过配置Nginx作为反向代理服务器,将用户的请求转发给后端服务器,同时可以利用Nginx的负载均衡功能,将请求分发到多个后端服务器上,从而提高网站的并发处理能力和响应速度。 此外,如果网站有大量静态资源(如图片、JavaScript和CSS文件),可以使用Nginx的静态文件缓存功能。静态文件缓存会将这些资源缓存在内存中或者磁盘上,减少了对后端服务器的请求次数,从而提高了网站的访问速度。 最后,可以通过Nginx的限速功能来控制并发请求的数量。通过限制每个IP地址的请求速率,可以防止某些恶意请求或者大量的同时请求,从而保证网站的正常运行速度。 综上所述,通过启用HTTP2协议、开启Gzip压缩、配置缓存、使用反向代理、静态文件缓存和限速等功能,可以通过Nginx加速网站,提高用户的访问体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值