反代jsdelivr.net自定义域名

默认分类
1687 2

结合多个文章修改而来,本文使用腾讯云香港测试

如果你跟我一样使用的是lnmp.org搭建的,对应的nginx conf在/usr/local/nginx/conf/vhost

一、 添加缓存目录

在server段之前,http之后添加

proxy_cache_path /tmp/JsdelivrCache levels=1:2 keys_zone=jsdelivr:20m max_size=10g inactive=180d 
use_temp_path=off;

参数详解

proxy_cache_path 缓存文件路径
levels 设置缓存文件目录层次;levels=1:2 表示两级目录
keys_zone 设置缓存名字和共享内存大小.【在使用的地方要使用相同的变量名】
inactive 在指定时间内没人访问则被删除
max_size 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。

二、在server段内添加反代

        location / {
            proxy_pass https://cdn.jsdelivr.net;
            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;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_ssl_server_name on;
            add_header X-Cache $upstream_cache_status;
            proxy_ignore_headers Set-Cookie Cache-Control expires;
            proxy_cache jsdelivr;
            proxy_cache_key $host$uri$is_args$args;
            proxy_cache_valid 200  180d;
            expires 180d;
            }

参数说明

proxy_cache后面的缓存名字必须和前面定义的缓存名字一致。
proxy_http_version 1.1;
proxy_set_header Connection "";
这两段表示使用http1.1协议与后端建立长连接可以避免反复开销连接降低速度,不设置会默认使用http1.0。
proxy_ssl_server_name on;代理ssl sni,这行必须配置,否则CDN会报错。
proxy_cache_valid 200 180d; 表示缓存状态码和过期时间,这里只缓存200的请求,并且缓存180日,缓存过期nginx会再次访问Jsdelivr

三、(可选)防盗链配置

server内添加

          location ~ .*\.(jpg|jpeg|gif|png|js|css)$ {
            expires      30d;
            access_log off;
            valid_referers wej.cc *.wej.cc; #白名单域名
            if ($invalid_referer){
            return 403;
            }
        proxy_pass https://cdn.jsdelivr.net; #这一行很关键,必须添加
        }

重启nginx即可,未在白名单来源的都会返回403,至于防盗链是可选的,如果你不怕自己的反代被他人使用,可以不加。

使用你自定义的域名开始加速吧

cat

最后更新 2022-05-24
评论 ( 2 )
OωO
隐私评论
  1. 没搞懂 可以解释一下吗

    2年前马来西亚回复
    1. @ALEXRACH

      哪里不懂呢?你用的什么程序

      2年前广东省广州市回复