前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自建CDN做图床

自建CDN做图床

作者头像
用户8099761
发布2023-05-11 11:19:58
5110
发布2023-05-11 11:19:58
举报
文章被收录于专栏:私人订制

前期购入了UltraVPS的250g大盘鸡,但是速度上确实差强人意,所以考虑通过CDN的形式,后来在网上研究了一下,确定了利用Nginx反向代理的方案,实际上CDN节点估计也就是2-3个。

CDN建设意向

  • LS-JP节点:电信、联通用户,和机场属于同一节点
  • Vultr/DO-SPG节点:移动用户

实际上也是因为AWS和DO的码子比较好弄。

安装Nginx

直接用了LNMP一键包,比较方便,实际上只需要安装Nginx就行了

设置回源节点

假如我需要对imgki.com搭建CDN节点,数据放在source.imgki.com(130.255.78.xx),需要先修改hosts指向,告知CDN节点去哪里去获取网站数据,也就是回源地址,做如下修改:

代码语言:javascript
复制
130.255.78.xx imgki.com

设置缓存目录

代码语言:javascript
复制
#创建缓存目录
mkdir -p /home/wwwroot/imgki.com/cache
#设置缓存目录权限
chown -R www:www /home/wwwroot/imgki.com/cache

在nginx-conf增加

代码语言:javascript
复制
proxy_cache_path /home/wwwroot/imgki.com/cache levels=1:2 keys_zone=imgki:150m inactive=130m max_size=150m;

/home/wwwroot/imgki.com/cache:为缓存目录
levels:指定该缓存空间有两层hash目录,第一层目录为1个字母,第二层为2个字母。
keys_zone=Rats:50m:为缓存空间起个名字,这里取名为“Rats”,后面的50m指内存缓存空间
inactive=30m:如果30分钟内该资源没有被访问则删除
max_size=50m:指硬盘缓存大小为50MB
proxy_cache_valid:指定状态码缓存时间,前面写状态码,后面写缓存时间。

配置Nginx反向代理

置上有很多其实我也不是很明白,反着照着套过来就能用,看着也没有什么问题。

代码语言:javascript
复制
location / {
proxy_pass https://imgki.com;
#把返回的302重定向的域名替换成你的。这里关闭
proxy_redirect off; 
#替换指定字符串
sub_filter source.imgki.com imgki.com;
#字符串只进行一次替换,即只替换第一个被匹配的字符串。这里关闭。
#sub_filter_once off;
#指定头部:
#proxy_set_header Host "imgki.com";
proxy_set_header Host $host;
proxy_set_header Referer $http_referer;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
#防止谷歌返回压缩的内容,因为压缩的内容无法替换字符串
proxy_set_header Accept-Encoding ""; 
proxy_set_header Accept-Language "zh-CN";
#把cookie的作用域替换成你的域名
proxy_cookie_domain source.imgki.com imgki.com;
#启用proxy_cache缓存
proxy_cache imgki;
proxy_cache_valid 304 24h;
proxy_cache_valid 403 444 24h;
proxy_cache_valid 404 24h;
proxy_cache_valid 500 502 24h;
proxy_cache_use_stale invalid_header http_404 http_500 http_502;
proxy_cache_lock on;
proxy_cache_lock_timeout 5s;

如果用的LNMP需要注释掉一些内容,否则会出现丢失CSS的情况

代码语言:javascript
复制
#        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
#        {
#            expires      30d;
#        }
 
#        location ~ .*\.(js|css)?$
#       {
#            expires      12h;
#        }

添加http的强制跳转

代码语言:javascript
复制
return 301 https://imgki.com$request_uri;

2018.12.21补充proxy_cache模块的具体解释

代码语言:javascript
复制
proxy_cache_path/data/nginx/tmp-test levels=1:2 keys_zone=tmp-test:100m inactive=7d max_size=1000g;  
proxy_cache_path 缓存文件路径
levels 设置缓存文件目录层次;levels=1:2 表示两级目录
keys_zone 设置缓存名字和共享内存大小
inactive 在指定时间内没人访问则被删除
max_size 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-9-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CDN建设意向
  • 安装Nginx
  • 设置回源节点
  • 设置缓存目录
  • 配置Nginx反向代理
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档