set :default_env, fetch(:default_env, {}).merge(
  'http_proxy' => 'http://gateway.example:8080',
  'https_proxy' => 'http://gateway.example:8080'
)

在 Capistrano 3 与 SSHKit 中,这段配置把代理值合并进部署主机的命令环境。请保留 PATH 等其他必需值,而不是替换整份映射。

字符串键会保留小写拼写。SSHKit 的命令构建器会把符号键转成大写,这可能改变需要 http_proxy 的客户端行为。例如 curl 对 HTTP 变量的大小写有特殊处理(curl 如何看待 HTTP 代理)。

如果只想对部分操作生效,可在相关 execute 调用外层使用携带同样字符串键值的 SSHKit with 块。

这些设置只影响部署主机上的命令,不会配置笔记本电脑的 SSH 连接,也不会为之后由其他守护程序启动的服务保留环境。请选择从那台远程主机可以访问的代理;它的 localhost 并不指向笔记本上的辅助程序。对于允许的公开下载,若远程工具不保留代理凭据,HTTP 代理列表中的 HTTP 条目就能提供这些值。

相关文章