You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Verdaccio搭配Nginx配置HTTPS反代时出现连接拒绝、混合内容报错

问题根因

所有报错本质是两个配置缺失导致的:

  • Verdaccio未配置子路径前缀,不知道自身服务挂载在/verdaccio/路径下,生成的资源、接口路径拼接错误
  • Nginx反向代理未传递原始请求协议头,导致Verdaccio始终认为自身服务在HTTP协议下,返回的所有链接均为http://开头,触发混合内容拦截、CSP规则拦截
    官方默认反代配置仅适用于Verdaccio部署在域名根目录的场景,直接套用到子路径部署场景必然出现路径匹配错误。
解决步骤

1. 修改Verdaccio配置

找到Verdaccio的配置文件config.yaml(Docker部署时一般为挂载到容器内/verdaccio/conf/config.yaml的宿主机文件),新增如下配置,指定服务前缀:

url_prefix: /verdaccio/

注意配置值末尾的斜杠不能省略,否则会出现路径拼接错误。

2. 替换Nginx反向代理配置

删除原有错误的Verdaccio反代规则,替换为如下配置:

location /verdaccio/ {
    proxy_pass http://127.0.0.1:6666/verdaccio/;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 关键:传递原始请求协议,告知后端前端使用HTTPS
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Prefix /verdaccio/;
    proxy_redirect off;
    # 可选:强制升级页面内HTTP请求为HTTPS,不需要可删除
    add_header Content-Security-Policy "upgrade-insecure-requests" always;
}

注意proxy_pass末尾必须携带/verdaccio/路径,和Verdaccio内配置的url_prefix保持一致,否则会出现路径转发错误。

3. 重载服务生效

  • 重启Verdaccio容器加载新配置:docker restart <你的verdaccio容器名称>
  • 验证Nginx配置无语法错误后重载:nginx -t && nginx -s reload

4. 验证效果

清空浏览器缓存(或使用无痕模式)访问https://my.site/verdaccio/即可正常加载包列表,不会再出现CSP、混合内容拦截报错。

原有配置错误说明
  • 第一版自定义配置:缺失X-Forwarded-Proto协议头,且proxy_pass路径和Verdaccio实际服务路径不匹配,导致接口请求地址错误、协议错误,触发CSP拦截、包列表加载失败
  • 官方默认配置:面向根路径部署场景设计,未适配子路径部署的路径规则,同时缺失协议头传递,导致静态资源路径404、混合内容拦截

内容的提问来源于stack exchange,提问作者Tsunani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 10:18:18