858 字
4 分钟
使用Nginx Proxy Manager搭建自己的Huggingface镜像站
本文主要内容使用NPM来创建一个自己的Huggingface镜像站,并设置URL Prefix来防止被自动采集后被被人使用。
2025-09-22: 添加xethub链接反代
众所周知,Huggingface不能国内直接访问,同时镜像站又存在速度限制,例如hf-mirror最高我这只有6MB/s。hf-mirror虽然开源了镜像站代码,但是实测无法运行(主要由于本人不会使用Caddy)。此外使用VPN虽然可以解决无法访问的情况,但是一直存在一个问题就是模型会越下越慢,哪怕开启TUN模式也没用,目前也没找到解决办法,所以至此萌生了使用NPM反代一个自己的镜像站。目前实测下载模型不会越下越慢,同时所有网页功能均可使用,包括登录注册等。
组件说明
- Nginx Proxy Manager: 提供反向代理功能。搭建参考:搭建 Nginx Proxy Manager
部署流程
反代Huggingface主站和LFS CDN下载节点
- 如图配置,这里假设你用的域名是
example.com:
- 前往Custom Location设置直接访问
https://example.com/时判断是否有我们自己设置的cookie,没有的话,不允许访问:# 检查 Cookie 是否存在if ($http_cookie !~* "access_granted=true") { # key-value pair请一定跟后续配置的一样return 403; # 或者 401, 502,根据你的需求选择合适的错误码}# 如果 Cookie 存在,并且 URI 不是以 /jZPU8pzjCweCDUiXxGB9B/ 开头,则内部重写。# 请注意替换为`设置实际访问的反代链接`部分设置的location,这里只是以我自己的location举例if ($request_uri !~ "^/jZPU8pzjCweCDUiXxGB9B/") {rewrite ^/(.*)$ /jZPU8pzjCweCDUiXxGB9B/$1 last;# 使用 'last' 指令进行内部重写,并重新查找 location}
- 反代如下下载节点,请自行修改你需要的
location:-
location /b3k3EnxpRbqvuomRASVE3/ {proxy_pass https://cdn-lfs-us-1.hf.co/;proxy_ssl_server_name on;proxy_ssl_name cdn-lfs-us-1.hf.co;proxy_set_header Host cdn-lfs-us-1.hf.co;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_buffering off;proxy_redirect off;}
-
location /3z7eaA2TmkKAfVdKGHMqzuGc5RdiPHBb/ {proxy_pass https://transfer.xethub.hf.co/;proxy_ssl_server_name on;proxy_ssl_name transfer.xethub.hf.co;proxy_set_header Host transfer.xethub.hf.co;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_buffering off;proxy_redirect off;}
-
location /BxZtnutU8K7si8kDtNpGJfpMNFCF3xHu/ {proxy_pass https://cas-server.xethub.hf.co/;proxy_ssl_server_name on;proxy_ssl_name cas-server.xethub.hf.co;proxy_set_header Host cas-server.xethub.hf.co;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_buffering off;proxy_redirect off;}
-
location /SyiDVN7og9c65PiesJj6ArNthsDjXnGz/ {proxy_pass https://cas-bridge.xethub.hf.co/;proxy_ssl_server_name on;proxy_ssl_name cas-bridge.xethub.hf.co;proxy_set_header Host cas-bridge.xethub.hf.co;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_buffering off;proxy_redirect off;}
注location可以自行设置- 这里代表的含义是当你访问
https://example.com/b3k3EnxpRbqvuomRASVE3/repos/***.bin下载LFS文件的时候,实际上访问的是https://cdn-lfs-us-1.hf.co/repos/***.bin,但是这不代表你是通过原Huggingface CDN连接下载,而是你是通过你的VPS->VPS访问文件->VPS传输回来给你的。
-
设置实际访问的反代链接
-
还是在Custom Location,填入如下配置:
location /jZPU8pzjCweCDUiXxGB9B/ {proxy_pass https://huggingface.co/;proxy_ssl_server_name on;proxy_ssl_name huggingface.co;proxy_set_header Host huggingface.co;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_buffering off;proxy_redirect https://cdn-lfs-us-1.hf.co https://exmaple.com/b3k3EnxpRbqvuomRASVE3;proxy_redirect https://transfer.xethub.hf.co https://example.com/3z7eaA2TmkKAfVdKGHMqzuGc5RdiPHBb;proxy_redirect https://cas-server.xethub.hf.co https://example.com/BxZtnutU8K7si8kDtNpGJfpMNFCF3xHu;proxy_redirect https://cas-bridge.xethub.hf.co https://example.com/SyiDVN7og9c65PiesJj6ArNthsDjXnGz;proxy_redirect https://huggingface.co https://example.com/jZPU8pzjCweCDUiXxGB9B/;add_header Set-Cookie "access_granted=true; Path=/;"; # Path=/ 表示 Cookie 对整个域名有效}注proxy_redirect https://cdn-lfs-us-1.hf.co https://example.com/b3k3EnxpRbqvuomRASVE3;:修改exmaple.com为你自己设置域名,修改/b3k3EnxpRbqvuomRASVE3为上一部分第三步设置的location,记得不要最后的/。proxy_redirect https://huggingface.co https://example.com/jZPU8pzjCweCDUiXxGB9B/;:修改exmaple.com为你自己设置域名,修改/jZPU8pzjCweCDUiXxGB9B/为此步骤设置的location。
-
结束。至此,当正确访问
https://example.com/jZPU8pzjCweCDUiXxGB9B/后,浏览器会设置一个cookie,也就是access_granted=true,此后哪怕没有输入正确的location,也可以正常访问,因为判断到浏览器有对应的cookie。注意这个cookie是会话级的,关闭窗口一段时间后会失效,要重新访问正确的连接才可以。
使用Nginx Proxy Manager搭建自己的Huggingface镜像站
https://blog.useforall.com/posts/11/ 最后更新于 2025-09-22,距今已过 55 天
部分内容可能已过时
Lim's Blog