admin 发表于 2025-3-20 10:40:34

DiscuzX接入CDN

DiscuzX 接入 CDN 需要解决以下问题:
[*]附件接入 CDN
[*]JS,CSS 接入 CDN
[*]staticurl 接入 CDN
[*]界面基础图片目录 {IMGDIR} 接入 CDN
[*]头像接入 CDN
[*]插件静态文件接入 CDN
基本方案是新增一个静态资源域名作为 CDN 回源域名,比如 static.tecbbs.com,然后配置以上 项目 能够通过此域名访问到。然后配置 CDN 域名,比如 cdn.tecbbs.com。Contents [hide]
[*]1 附件接入CDN
[*]2 JS CSS接入CDN
[*]3 staticurl接入CDN
[*]4 界面基础图片目录接入CDN
[*]5 头像,插件等接入CDN
[*]6 参考资料

附件接入CDN通过以下配置,使 static.tecbbs.com 能够访问附件:location ^~ /data/attachment/ {        root /var/www/discuz;        expires 30d;}然后 DiscuzX 后台,全局 - 上传设置 - 基本设置 - 本地附件 URL 地址 中改为 CDN 链接 https://cdn.tecbbs.com/data/attachment。如果使用了远程附件,则为远程附件做 CDN 加速,并且在远程附件配置中把 远程访问 URL 改为 CDN 链接。JS CSS接入CDNDiscuzX 的 JS 和 CSS 会缓存到 data/cache 目录下,因此首先为此目录添加 static.tecbbs.com 域名:location ^~ /data/cache/ {        root /var/www/discuz;        expires 1d;}然后到后台,全局 - 性能优化 - 服务器优化,修改 JS 文件 URL 及 CSS 文件 URL 为 CDN 链接。staticurl接入CDN为 static/ 目录添加 static.tecbbs.com 域名:location ^~ /static/ {        root /var/www/discuz;        expires 1d;}config/config_global.php 中,修改以下配置为 CDN 链接:$_config['output']['staticurl'] = 'https://cdn.tecbbs.com/static/'界面基础图片目录接入CDN已经为 static/ 目录添加域名,然后界面基础图片目录可以直接修改为 CDN 链接。进入后台, 界面 - 风格管理,编辑当前使用的模板,找到 界面基础图片目录 {IMGDIR},改为 https://cdn.tecbbs.com/static/image/common。头像,插件等接入CDN这一部分思路都类似,都使基于 Nginx sub_filter 模块来做,和 WordPress方案类似。DiscuzX 主域名的配置中配置 sub_filter:# cdn sub_filter 'https://www.tecbbs.com/uc_server/data/avatar/' 'https://cdn.tecbbs.com/uc_server/data/avatar/';# 相册cdn        sub_filter '<img src="data/attachment/album/' '<img src="https://cdn.tecbbs.com/data/attachment/album/';        # 插件,可根据情况为指定插件开启sub_filter 'source/plugin/zxsq_' 'https://cdn.tecbbs.com/source/plugin/zxsq_';sub_filter_types *;sub_filter_once off;然后在 static.tecbbs.com 域名下配置:location ~ /uc_server/data/avatar/(\d\d\d)/(\d\d)/(\d\d)/(\d\d)_avatar_(.+?).jpg {        root /var/www/discuz;        set $avatar1 $1;        set $avatar2 $2;        set $avatar3 $3;        set $avatar4 $4;        set $avatarsize $5;        # 用户未上传头像的情况,根据自身情况配置 @avatar        try_files $uri @avatar;        # 设置过期时间,否则cdn不会命中缓存        # 对头像来说,短一些比较合适,否则用户更新头像不生效        expires 1d;}location ^~ /source/plugin/ {        root /var/www/discuz;        expires 1d;}# 解决字体跨域,某些插件可能引用了字体location ~* \.(eot|ttf|woff|woff2)$ {        add_header Access-Control-Allow-Origin *;        add_header accpet */*;}然后头像需要在 UCenter 后台设置使用静态链接调用头像。参考资料1. https://www.cnblogs.com/iruxu/p/discuz-cdn.html2. https://www.discuz.net/thread-3577432-1-1.html相关文章:
[*]WordPress免插件接入CDN
[*]UCenter用户头像的存储规则
[*]Discuz x2解决采用静态地址调用头像DIY页面无法显示无头像用户问题
[*]在Windows下编辑Unix格式文档
[*]Nginx笔记(二)
[*]Nginx服务器上换discuz域名


页: [1]
查看完整版本: DiscuzX接入CDN