这是上个月一次搭建多个静态文件节点的实践,转载自我的博客,欢迎交流。

鉴于监管环境和网站速度之间的矛盾,目前的网络架构方式如下: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
地址:http://ng_srvinst.att.kiev.ua/
使用很简单,解压到任意文件夹后,修改ng_srv.xml内Nginx的路径,比如

  1. <service>
  2. <id>nginx</id>
  3. <name>nginx</name>
  4. <description>nginx</description>
  5. <executable>E:\nginx\nginx.exe</executable>
  6. <logpath>E:\wwwroot\logfiles\</logpath>
  7. <logmode>roll</logmode>
  8. <depend></depend>
  9. <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; 也是可以的)

  1. server {
  2. server_name  wucha.sg;
  3. root E:/wwwroot;
  4. set $index 'index.html';
  5. set $store_file $request_filename;
  6. if ($uri ~ /$ ){
  7. set $store_file $request_filename$index;
  8. rewrite (.*) $1index.html last;
  9. }
  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。要发布文件,只需上传到源服务器,即能在所有做了配置的服务器上访问。

转自:http://bbs.phpchina.com/forum.php?mod=viewthread&tid=205046

用Nginx做静态文件的CDN的更多相关文章

  1. Django 关闭Debug后使用Nginx做静态文件的访问

    Django 关闭Debug后使用Nginx做静态文件的访问 关闭Django 的Debug参数 1 . 修改settings.py配置文件 DEBUG = False 2 . settings.py ...

  2. 浅谈 举家搬迁静态文件到CDN

    由于七牛CDN最近做活动,对于标准用户可以免费使用如下优惠 10 GB 存储空间 10 G/月 下载流量 10 万次/月 PUT/DELETE 请求 100 万次/月 GET 请求 以上这些指标直接就 ...

  3. docker应用栈实践-nginx处理静态文件

    在我的djangoweb应用在docker搭建好之后,发现一些css静态文件返回没有content-type属性,导致浏览器log一堆警告,强迫症的我受不了这一情况 目前的应用栈结构图: 一共四个容器 ...

  4. Nginx 优化静态文件访问

    简介 Web 开发中需要的静态文件有:CSS.JS.字体.图片,可以通过web框架进行访问,但是效率不是最优的. Nginx 对于处理静态文件的效率要远高于 Web 框架,因为可以使用 gzip 压缩 ...

  5. nginx访问静态文件配置

    通过nginx访问静态文件配置,均是在server模块中配置,有两种方式: 1.alias 通过alias关键字,重定义路径,如 server{     listen 7001;     server ...

  6. 用nginx缓存静态文件

        这篇教程说明你应该怎样配置 nginx.设置 HTTP 头部过期时间,用 Cache-Control 中的 max-age 标记为静态文件(比如图片. CSS 和 Javascript 文件) ...

  7. windows下nginx直接处理静态文件

    网上的沙雕们,你们发文章的时候就不能简单说明一下环境吗?老子都要看到一半才发现不是需要的类型 ji静态文件使用nginx直接处理,减轻tomcat压力 对于我的网站,静态文件有js css图片,然后图 ...

  8. nginx部署静态文件站点

    server { listen PORT; #PORT为监听端口 server_name SERVER_NAME; #SERVER_NAME为域名 charset utf-8; autoindex o ...

  9. Nginx配置静态文件服务从入门到精通

    作者:三十三重天 博客:http://www.zhouhuibo.club 通过学习和分享的过程,将自己工作中的问题和技术总结输出,希望菜鸟和老鸟都能通过自己的文章收获新的知识,并付诸实施. 引言 使 ...

随机推荐

  1. IDEA 创建git 分支 拉取分支

        此时只是在本地创建好了分支,修改源代码后add,commit将本地分支提交到远程仓库          分支已创建,其它成员此时就可以从git拉分支

  2. git之移除.idea

    有时候不小心提交了.idea目录,git会一直track这个目录,可以通过一下命令移除: mv .idea ../.idea_backup rm -r .idea git rm -r .idea gi ...

  3. Python之排序

    1. 2维数组排序 (按照每行第一个数字从小到大进行排序) poses.sort(key=lambda x: x[0]) for ppp in poses: print ppp,','

  4. 解决连锁零售行业IT运维管理四大困境

    解决连锁零售行业IT运维管理四大困境   中国近年来,连锁零售行业进入了行业的发展高潮,迅速崛起一批大型连锁业态.而随着IT技术的不断进步,连锁零售企业已经步入IT信息化快速发展的重要阶段:在面对激烈 ...

  5. CentOS 7 之前好好的,突然一天启动时黑屏,没有登陆界面了(配置 network-scripts 连网)

    原因: 百度大神说是Gnome(一套纯粹自由的计算机软件,运行在操作系统上,提供图形桌面环境)不行了. 解决方法: 1. 重启系统,ctrl + alt + F2 进入命令行界面. 2. sudo s ...

  6. php -- 取整数

    PHP取整数函数常用的四种方法,下面收集了四个函数: 经常用到取整的函数,今天小小的总结一下!其实很简单,就是几个函数而已--主要是:ceil,floor,round,intval ceil — 进一 ...

  7. [poj 1947] Rebuilding Roads 树形DP

    Rebuilding Roads Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10653 Accepted: 4884 Des ...

  8. QStandardItemModel角色控制及QTreeView添加不同的右键菜单

    http://blog.csdn.net/czyt1988/article/details/26018513

  9. linux中crontab实战篇

    1.先安装crontab,之前的文章有介绍 2.查看 crontab -l 3.编辑 crontab -e 0 7 * * * /application/php/bin/php www.xialan. ...

  10. Maven最佳实践-distributionManagement

    分发构件至远程仓库 mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库.本地Maven仓库的构件只能供当前用户使用, ...