用Nginx做静态文件的CDN
2019-03-18 05:42:31来源: 微风实验室,dev.meettea.com 阅读 ()
鉴于监管环境和网站速度之间的矛盾,目前的网络架构方式如下:
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的路径,比如
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。要发布文件,只需上传到源服务器,即能在所有做了配置的服务器上访问。
本文采用Creative Commons协议,复制本文需遵守三点:1、保留署名(链接);2、非商业性使用;3、再次创作的作品必须以相同的许可协议发布。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 如何快速识别网页是静态、动态、还是伪静态的? 2019-04-10
- docker部署nginx php mysql环境实践 2019-04-10
- Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程 2019-04-10
- 利用Ubuntu部署PHP7、Nginx、MySQL网站环境过程 2019-04-10
- 免费SSL安全证书Let's Encrypt申请及Nginx WEB站点部署HTTPS 2019-04-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash