
前言:这个服务本意是提供一些开发文件及图床的jsd代理加速,避免国内使用相关服务时无法访问或访问过慢,现提供两种高效使用该服务的部署方式,如果你在使用中有问题,也可以留言反馈
服务介绍
主要把常见的 GitHub / npm / unpkg 资源链接解析为 jsDelivr CDN 资源,并提供多种输出方式(直连/代理/跳转):
- 带有安全管理体系,一键识别拉黑恶意攻击扫描IP,可自行设置解封时间
- 日志查看,包含登录删除等操作也会被记录,可设置保留日志的时间(自动清理)
- 流量统计,可显示近 30 天流量汇总(字节/请求数)与 Top使用列表
- 页面设置,带有公告设置及网站标题、icon的设置,公告支持md、txt、html写法
在线使用
访问:https://jsd.cdn.noisework.cn
功能与特性
- 支持链接识别与转换
- GitHub:
raw.githubusercontent.com/github.com/.../blob/.../github.com/.../raw/... - npm:
unpkg.com - jsDelivr CDN:
cdn.jsdelivr.net/gh/.../cdn.jsdelivr.net/npm/...(可直接作为上游) - 简写
gh:owner/repo@ref/path/to/file.extnpm:pkg@ver/path/to/file.ext(支持作用域包:npm:@scope/pkg@ver/path/to/file.ext)
- GitHub:
- 输出方式
/gh/<owner>/<repo>@<ref>/<path>:同路径直连(服务端代理 jsDelivr 并返回内容;推荐图床/跨域)/npm/<pkg>@<ver>/<path>:同路径直连(服务端代理 jsDelivr 并返回内容;推荐图床/跨域)/cdn?url=...:代理输出(同样返回内容,适合"只能用 query 参数"的场景)/r?url=...:Redirect(302 跳转到 jsDelivr)/u?url=...:仅解析,返回 JSON(首页/前端页面使用)
- 安全策略(Proxy)
- 仅允许代理 jsDelivr 官方域名:
cdn.jsdelivr.net、fastly.jsdelivr.net - 默认开启
Access-Control-Allow-Origin: *,适合图片/静态资源跨域引用
- 仅允许代理 jsDelivr 官方域名:
- 缓存策略(Proxy)
- 若 URL ref 识别为"稳定版本"(例如 commit sha 或 semver),会返回长期缓存
- 若为
main/master/latest等不稳定 ref,默认短缓存

一、Docker 部署
docker pull noise233/jsd-noise:latest
推荐按下面这样跑(首次会自动创建并初始化 /app/data/app.db;以后复用旧数据直接沿用该目录即可):
docker run -d \
--name jsd-noise \
-p 5011:5011 \
-v "$(pwd)/data:/app/data" \
-e PORT=5011 \
-e DB_PATH=/app/data/app.db \
-e TZ=Asia/Shanghai \
noise233/jsd-noise:latest
默认首次注册的用户为管理员,如果你有旧数据如在/opt/jsd/文件夹中,则使用 -v /opt/jsd:/app/data \即可
你也可以一键部署在zeabur或fly.io等无服务器平台

二、Nginx
适用于服务器轻量化使用,可直接在宝塔面板一键修改网站配置文件,将下面代码复制后修改必要的文件路径即可,已经配置了缓存时间及文件大小限制,可自行修改
功能同上述,但没有后台
配置文件代码:
server {
# ===== 监听端口(同时支持 HTTP/HTTPS 和 IPv4/IPv6) =====
listen 80;
listen 443 ssl http2;
listen [::]:80;
listen [::]:443 ssl http2;
# ===== 域名(请替换为你自己的站点域名) =====
server_name cdn.example.com www.cdn.example.com; # 替换为你的真实域名
# ===== 网站根目录(用于本机资源,如 /custom_413.html) =====
# 如果你的项目不在默认宝塔目录,请一并修改这里
root /www/wwwroot/cdn.example.com; # 替换为你的实际站点根目录
# ===== 宝塔扩展配置目录(如伪静态、重写规则等) =====
# 路径中的域名也需要同步替换
include /www/server/panel/vhost/nginx/extension/cdn.example.com/*.conf;
#CERT-APPLY-CHECK--START
# 用于 SSL 证书申请时的文件验证相关配置 —— 请勿删除
include /www/server/panel/vhost/nginx/well-known/cdn.example.com.conf;
#CERT-APPLY-CHECK--END
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#HTTP_TO_HTTPS_START
# 自动将 HTTP 跳转到 HTTPS(.well-known 除外,用于证书申请验证)
set $isRedcert 1;
if ($server_port != 443) {
set $isRedcert 2;
}
if ( $uri ~ /\.well-known/ ) {
set $isRedcert 1;
}
if ($isRedcert != 1) {
rewrite ^(/.*)$ https://$host$1 permanent;
}
#HTTP_TO_HTTPS_END
# ===== SSL 证书与参数 =====
# 证书路径同样需要替换为你的域名对应路径
ssl_certificate /www/server/panel/vhost/cert/cdn.example.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/cdn.example.com/privkey.pem;
# 【安全建议】
# 当前配置包含 TLSv1/TLSv1.1,已属于不安全协议,建议只保留 TLSv1.2 TLSv1.3
# 参考各类安全基线,仅启用现代 TLS 版本
ssl_protocols TLSv1.2 TLSv1.3; # 建议去掉 TLSv1 TLSv1.1
# 【安全建议】
# cipher 套件建议按 Mozilla Intermediate 规范更新,例如只保留带 ECDHE+AES-GCM/ChaCha20 的套件
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:EECDH+AES256:RSA+AES128:RSA+AES256:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# HSTS:告诉浏览器未来一年只使用 HTTPS 访问本站
add_header Strict-Transport-Security "max-age=31536000";
# 当客户端使用 HTTP 请求 HTTPS 端口时,Nginx 返回 497,这里跳转为 HTTPS
error_page 497 https://$host$request_uri;
# ===== 首页规则 =====
location = / {
# 如果主页是 PHP 项目,一般改为 index.php index.html
index index.html; # 根据实际情况调整为 index.php index.html 等
}
# ===== 通用请求处理:先尝试本地文件,否则走反向代理 =====
location / {
try_files $uri $uri/ @proxy;
}
# ===== 反向代理 jsdelivr CDN 的核心逻辑 =====
location @proxy {
# 上游:jsdelivr CDN
proxy_pass https://cdn.jsdelivr.net;
# 确保 SNI 匹配 jsdelivr(尤其是共享 IP / CDN 场景)
proxy_ssl_server_name on;
# 传递客户端真实信息给上游
proxy_set_header Host cdn.jsdelivr.net;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
# 支持 WebSocket / 保持长连接
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# 显示缓存命中状态(调试用,可按需注释)
add_header X-Cache $upstream_cache_status;
# ===== 服务端缓存配置 =====
# 忽略上游某些控制头,让 Nginx 自己决定缓存策略
# 说明:忽略 Cache-Control / Expires 可以让 Nginx 按自身规则缓存;
# 忽略 Set-Cookie 是因为 jsdelivr 基本不会在静态资源上用 Cookie,
# 但如果有敏感会话信息,需谨慎评估是否真的要忽略。
proxy_ignore_headers Set-Cookie Cache-Control expires;
# 使用共享内存区域 cache_one 作为缓存空间
# 注意:需要在 http 块中提前定义 proxy_cache_path,例如:
# proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=cache_one:100m inactive=180d max_size=10g;
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
# 缓存正常响应和重定向
proxy_cache_valid 200 304 301 302 1440m;
# 防止大文件回源时占用过多磁盘/带宽
proxy_max_temp_file_size 5m;
# 拦截上游错误码,交给 error_page 处理
proxy_intercept_errors on;
# 自定义 413 错误页面(实体过大)
error_page 413 /custom_413.html;
# ===== 客户端缓存控制(浏览器端) =====
# 对常见静态资源设置较长过期时间,减轻服务器压力
if ($uri ~* "\.(gif|mp4|mp3|png|jpg|css|js|webp)$") {
expires 2M; # 浏览器缓存 2 个月
}
}
# ===== 自定义 413 页面(请求体过大) =====
# 注意:Nginx 对 413 的自定义错误页有特殊限制,
# 需要确保所在 location 的 client_max_body_size 大于实际限制,
# 否则 error_page 可能不会生效,仍会返回默认 413 页面。
location = /custom_413.html {
root /www/wwwroot/cdn.example.com; # 与 server.root 保持一致,或单独指定
internal; # 只允许内部重定向访问
default_type text/html;
return 200 '文件超过5MB,不予返回!';
}
}
使用时需要做的几件事:
- 把所有
cdn.example.com/www.cdn.example.com替换为你自己的域名。 - 把
/www/wwwroot/cdn.example.com和证书路径替换为你实际的路径。 - 在
http块中添加proxy_cache_path定义(示例里是cache_one),例如:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=cache_one:100m inactive=180d max_size=10g;
如果你不想使用我的首页文件而自建的是 PHP 项目,把 index.html 改成 index.php。



