--- id: uplinks(上行链路) title: "上行链路" --- *上行链路* 是指可以访问到外部包的外部注册服务器地址。 ![上行链路](/img/uplinks.png) ### 用法 ```yaml uplinks: npmjs: url: https://registry.npmjs.org/ server2: url: http://mirror.local.net/ timeout: 100ms server3: url: http://mirror2.local.net:9000/ baduplink: url: http://localhost:55666/ ``` ### 配置 你可以定义多个上行链路,每一个都必须有唯一的名称(键值). 它们可以有多个属性: | 属性 | 类型 | 必须的 | 范例 | 支持版本 | 描述 | 默认值 | | ------------ | ------- | --- | --------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------- | -------- | | url | string | 是 | https://registry.npmjs.org/ | 全部 | 外部注册服务器URL | npmjs | | ca | string | 否 | ~./ssl/client.crt' | 全部 | SSL证书文件路径 | 无默认值 | | timeout | string | 否 | 100ms | 全部 | 为请求设置新的超时时间 | 30s | | maxage | string | 否 | 10m | 全部 | 请求返回信息时效,在此时间内不会发起相同的请求 | 2m | | fail_timeout | string | 否 | 10m | 全部 | 请求在连续失败超过指定次数后的最长等待重试时间 | 5m | | max_fails | number | 否 | 2 | 全部 | 请求连续失败的最大次数限制 | 2 | | cache | boolean | 否 | [true,false] | >= 2.1 | 缓存下载的远程tarball文件到本地 | true | | auth | list | 否 | [见下文](uplinks.md#auth-property) | >= 2.5 | 指定“授权authorization”请求头的内容 [详情见](http://blog.npmjs.org/post/118393368555/deploying-with-npm-private-modules) | disabled | | headers | list | 否 | authorization: "Bearer SecretJWToken==" | 全部 | 上行链路请求的请求头header列表 | disabled | | strict_ssl | boolean | 否 | [true,false] | >= 3.0 | 为true时,会检测SSL证书的有效性 | true | #### Auth属性 `auth` 属性内容是向上行链路发起请求时提供的授权令牌。例如使用默认环境变量: ```yaml uplinks: private: url: https://private-registry.domain.com/registry auth: type: bearer token_env: true # defaults to `process.env['NPM_TOKEN']` ``` 或者使用一个指定的环境变量 ```yaml uplinks: private: url: https://private-registry.domain.com/registry auth: type: bearer token_env: FOO_TOKEN ``` `token_env: FOO_TOKEN`内部将使用 `process.env['FOO_TOKEN']` 或者直接指定令牌: ```yaml uplinks: private: url: https://private-registry.domain.com/registry auth: type: bearer token: "token" ``` > 注意: `token`的优先级高于`token_env` ### 须知 * 自版本 `v2.3.0`以来, Verdaccio 不在使用Basic Authentication。verdaccio 所生成的所有令牌都基于 JWT ([JSON Web Token](https://jwt.io/)) * 上行链路必须是兼容`npm`的注册服务器 例如: *verdaccio*, `sinopia@1.4.0`, *npmjs registry*, *yarn registry*, *JFrog*, *Nexus* and more. * 设置`cache` 为false可以帮助节省你的硬盘空间。 这将避免存储 `tarballs`,但是[它将保留元数据在文件夹里](https://github.com/verdaccio/verdaccio/issues/391)。 * 配置过多的上行链路会导致包查询速度变慢,这是因为相比较一个npm客户端每发送一次的请求,verdaccio却需要向每个上行链路都发送一次这样的请求 * 这些属性(timeout, maxage and fail_timeout) 的配置单位格式参考[NGINX measurement units](http://nginx.org/en/docs/syntax.html)