
前言:这个服务本意是提供一些开发文件及图床的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.ext
npm:pkg@ver/path/to/file.ext(支持作用域包:npm:@scope/pkg@ver/path/to/file.ext)
- 输出方式
/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: *,适合图片/静态资源跨域引用
- 缓存策略(Proxy)
- 若 URL ref 识别为”稳定版本”(例如 commit sha 或 semver),会返回长期缓存
- 若为
main/master/latest 等不稳定 ref,默认短缓存

一、Docker 部署
1
| docker pull noise233/jsd-noise:latest
|
推荐按下面这样跑(首次会自动创建并初始化 /app/data/app.db;以后复用旧数据直接沿用该目录即可):
1 2 3 4 5 6 7 8
| 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
适用于服务器轻量化使用,可直接在宝塔面板一键修改网站配置文件,将下面代码复制后修改必要的文件路径即可,已经配置了缓存时间及文件大小限制,可自行修改
网站首页文件:https://noise.lanzoul.com/iJdlt3q5tokd
功能同上述,但没有后台
配置文件代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
| 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),例如:
1
| proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=cache_one:100m inactive=180d max_size=10g;
|
如果你不想使用我的首页文件而自建的是 PHP 项目,把 index.html 改成 index.php。