西安网站建设-西安网站制作-专业西安网站制作公司-「力洋网络」

西安力洋网络
  • 西安网站建设
  • 西安网站制作
  • 西安网站建设
  • 用Nginx做静态文件的CDN来源:

  • 发布者:本站 发布时间:2010/11/12 10:04:44
  • 用Nginx做静态文件的CDN来源:

         鉴于监管环境和网站速度之间的矛盾,目前的网络架构方式如下:

         1、web动态页面(含数据库)架设在位于美国西海岸的数据中心;

         2、静态文件,例如css、js、exe、图片存放在国内几台windows服务器上。

         如果你的网站是商用、盈利性的网站,而没有技术能力搭建CDN,请使用第三方CDN服务。

         存在的问题有:

         1、静态文件同步问题;

         2、缓存刷新问题。
    第一个问题使用nginx得到解决。使用proxy_store功能,在文件不存在的时候请求源服务器,并保存。

         文件存在时直接读取本机文件。

         squid等方案因为再学习一个新工具需要成本;而nginx的实际使用情况并不逊色于squid等软件。所以不予考虑。这就是所谓老大拍脑袋决定方案吧。

         第二个问题,参考第四届D2上口碑网分享的经验:CDN上静态文件不提供删除功能。其实也未尝不可。当然也可以使用相应nginx扩展接口甚至php文件来清除缓存,也不是很复杂。

         安装

         如果你的系统是linux的,可忽略第一步,看第二步:配置方式

         1、安装Nginx

         windows在生产环境安装nginx最好使用服务的方式。如果根据网上提供的instsrv.exe注册服务方案,具有若干缺陷。比如nginx.exe作为主进程启动另一个进程,而instsrv.exe只能监控一个进程。这里推荐俄罗斯人写的一款小工具NG_SRVINST

         使用很简单,解压到任意文件夹后,修改ng_srv.xml内Nginx的路径,比如


         XML/HTML代码

         01.<service>    
         02. <id>nginx</id>    
         03.  <name>nginx</name>    
         04.  <description>nginx</description>    
         05.  <executable>E:\nginx\nginx.exe</executable>    
         06.  <logpath>E:\wwwroot\logfiles\</logpath>    
         07.  <logmode>roll</logmode>    
         08.  <depend></depend>    
         09.  <startargument>-p E:\nginx</startargument>    
         10.  <stopargument>-p E:\nginx -s stop</stopargument>    
         11.</service>  

         然后ng_srv.exe install就安装好了。

         2、配置方式proxy

         首先修改HOSTS内的域名指向源服务器的ip,然后,见配置文件。把wucha.sg替换为你的域名即可。(或者只修改proxy_pass http://源服务器的ip; 也是可以的)

         JavaScript代码

         01.server {  
         02. server_name  wucha.sg;  
         03. root E:/wwwroot;  
         04. set $index 'index.html';  
         05. set $store_file $request_filename;  
         06. if ($uri ~ /$ ){  
         07.  set $store_file $request_filename$index;  
         08.  rewrite (.*) $1index.html last;  
         09. }  
         10. location / {  
         11.  root "E:/wwwroot";  
         12.  index index.html;  
         13.  proxy_store on;  
         14.  proxy_temp_path "E:/wwwroot";  
         15.  proxy_set_header Host wucha.sg;  
         16.  proxy_set_header X-Real-IP $remote_addr;  
         17.  if ( !-e $request_filename ) {  
         18.   proxy_pass http://wucha.sg;  
         19.  }  
         20. }  
         21.}   

         启动nginx服务,试试访问一个文件,然后看看proxy_temp_path下有没有生成文件。这一步我遇上了点问题,就是测试txt文件死活不生成。最后访问一个大于70KB的js生成了,再访问txt也生成了。

         要注意的是nginx服务的权限要有读写临时文件夹的权限,还有root和proxy_temp_path最好在同一个文件夹下(未考证,但是位于不同分区会导致错误。)

         如果你看到文件夹内一串数字,并且文件尺寸在不断在增长,那是nginx在下载文件时生成的临时文件。

         大功告成,可以用dnspod之类的服务来做简单cdn。要发布文件,只需上传到源服务器,即能在所有做了配置的服务器上访问。

     

  • 返回列表
    相关阅读
    更多
    深度挖掘网站的商用价值,化繁为简的设计,为企业找到直接有效的解决方案
    +86 (029) 88765320
    +86 15829904657
    地址:西安市太华北路369号
    万达广场4#23F P.C:7100001
    985224206@qq.com
    在线咨询: 985224206
    互联网协会成员单位
    西安力洋之星网络技术有限公司 | 版权所有
    Copyright 2008-2020 Liyang.Inc All Rights Reserved.
    Liyang.Inc