sakura
sakura copied to clipboard
Jsdelivr 资源失效的解决办法
批量替换jsdelivr资源镜像
前提:
- 你需要一台海外服务器
- 使用 Nginx
如果没有条件,请看最后一行。
对于 Linux / macOS 系统,运行:
sed -i "s/cdn.jsdelivr.net/jsdelivr.example.com/g" `grep -rl 'cdn.jsdelivr.net' Path/To/wp-content/themes/Sakura`
Path/To/wp-content/themes/Sakura
自行替换成你的路径,可通过命令 pwd
获取当前路径
对于 Windows 系统,以管理员身份启动 PowerShell(PowerShell 5 以上,PowerShell 7下载),运行:
Get-ChildItem -Path C:\Path\To\Sakura -File -Recurse | Foreach-Object {
(Get-Content $_.PSPath) -Replace 'cdn.jsdelivr.net', 'jsdelivr.example.com' | Set-Content $_.PSPath
}
C:\Path\To\Sakura
自行替换成你的路径,可通过命令 pwd
获取当前路径
以上的 jsdelivr.example.com
需要自行替换成自己的 jsdelivr 镜像域名,镜像配置如下(Nginx):
# 缓存路径配置
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=CACHE:10m inactive=7d max_size=1g;
# referer 白名单
map $http_referer $jsdelivr_allow_referer {
default 0;
"~example.com" 1;
"~example2.com" 1;
}
map $jsdelivr_allow_referer $jsdelivr_disallow_referer {
0 1;
1 0;
}
server {
listen 443 ssl http2;
server_name jsdelivr.example.com;
# ssl 配置
ssl_certificate ~/.acme.sh/mashiro/fullchain.cer;
ssl_certificate_key ~/.acme.sh/mashiro/mashiro.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
# 关闭日志
access_log off;
# 指定 DNS
resolver 8.8.8.8;
if ($jsdelivr_disallow_referer) {
return 403 "The referer domain is not allowed to access this resource.";
}
location / {
proxy_redirect off;
proxy_pass https://fastly.jsdelivr.net;
proxy_cache_revalidate on;
proxy_set_header Host cdn.jsdelivr.net;
proxy_cache CACHE;
# 客户端的缓存时长
proxy_cache_valid 200 1h;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_lock on;
# 服务器端的缓存时长
expires 1h;
}
}
以上需要在能正常访问 jsdelivr 的服务器上配置。如果确实没有条件,需要使用我的镜像,请通过QQ联系我。
其他反向代理方案:
所以可爱的白猫大大能不能整个更新捏
我自己网站就是这样改的,因为实在太懒了¯_༼ ಥ ‿ ಥ ༽_/¯
建议配置再加几行,利用nginx的自带的sub模块
sub_filter_once off;
sub_filter_types *;
sub_filter "cdn.jsdelivr.net" "jsdelivr.moezx.cc";
#需要关闭上游的gzip功能,否则sub模块无法完成筛选操作
proxy_set_header Accept-Encoding "";
这样一些需要递归请求jsdelivr的插件就能正常工作辣(〜 ̄▽ ̄)〜
建议配置再加几行,利用nginx的自带的sub模块
sub_filter_once off; sub_filter_types *; sub_filter "cdn.jsdelivr.net" "jsdelivr.moezx.cc";
这样一些需要递归请求jsdelivr的插件就能正常工作辣(〜 ̄▽ ̄)〜
可能产生性能开销,高流量场景需要注意做好缓存哦
白猫大大,如果使用的是虚拟主机的话怎么办啊
白猫大大,如果使用的是虚拟主机的话怎么办啊
可在自己电脑上批量替换以后再上传,更新了 Windows 的替换脚本
白猫大,如果使用的是虚拟主机的话怎么办啊
可以在自己的电脑上更新替换Windows以后再上传,更新了的替换脚本
那请问文章里的图片该怎么批量替换啊?一个一个替换太麻烦了
白猫大,如果使用的是虚拟主机的话怎么办啊
可以在自己的电脑上更新替换Windows以后再上传,更新了的替换脚本
那请问文章里的图片该怎么批量替换啊?一个一个替换太麻烦了
请问猫大能留一个qq吗,找了一圈实在是找不到qq
你好,我已经在linux运行sed命令并成功更新了 但是浏览器访问网站依然请求失败,而且我服务器和浏览器都可以正常访问 jsdelivr “其中 jsdelivr.moezx.cc 需要自行替换成自己的 jsdelivr 镜像域名,镜像配置如下(Nginx)” 这句话后面的内容我不太理解 是我需要配置这个吗?但是我的nginx有我的配置,我要怎样配置?“自己的 jsdelivr 镜像域名”又是什么意思呢
你好,我已经在linux运行sed命令并成功更新了 但是浏览器访问网站依然请求失败,而且我服务器和浏览器都可以正常访问 jsdelivr “其中 jsdelivr.moezx.cc 需要自行替换成自己的 jsdelivr 镜像域名,镜像配置如下(Nginx)” 这句话后面的内容我不太理解 是我需要配置这个吗?但是我的nginx有我的配置,我要怎样配置?“自己的 jsdelivr 镜像域名”又是什么意思呢
需要另外配置一个域名,来做jsdelivr镜像,这些Nginx配置是用来来给镜像域名用的
请问猫大能留一个qq吗,找了一圈实在是找不到qq
我在群里面
完美运行,用npm代理了jsdelivr
我快要崩溃了,就是改不出来
求求各位大大帮帮我吧