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

Ruby中使用net/http设置nil代理绕过公司代理对接Jenkins

解决代理环境下Ruby作业跳过代理连接外部Jenkins的问题

我完全理解你的场景:身处公司代理网络中,Docker部署的Dashboard通过Ruby作业对接第三方组件,其中特定作业需要让Dashboard绕过公司代理,直连外部Jenkins服务——而你希望通过将proxy参数设为nil来实现这个需求。


基于Ruby标准库Net::HTTP的实现方案

假设你的代码依赖Ruby标准库Net::HTTP,下面是完整的可运行示例,核心就是显式将proxy参数设为nil来强制跳过代理:

require 'net/http'
require 'uri'
require 'json' # 如果需要解析Jenkins返回的JSON数据

def fetch_jenkins_system_info(jenkins_api_url)
  uri = URI.parse(jenkins_api_url)
  
  # 关键操作:将proxy参数设为nil,彻底绕过代理直连
  http_client = Net::HTTP.new(uri.host, uri.port, nil)
  
  # 适配HTTPS场景(大部分Jenkins实例会启用HTTPS)
  if uri.scheme == 'https'
    http_client.use_ssl = true
    # 若Jenkins使用公司内部CA签发的证书,需配置信任路径;测试环境可临时关闭验证(生产环境禁用此操作)
    # http_client.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end
  
  begin
    response = http_client.get(uri.path + "?" + uri.query.to_s)
    # 处理响应:示例为解析Jenkins的系统信息JSON
    if response.code == '200'
      jenkins_info = JSON.parse(response.body)
      puts "Jenkins版本:#{jenkins_info['version']}"
      return jenkins_info
    else
      puts "Jenkins请求失败,状态码:#{response.code}"
      return nil
    end
  rescue => e
    puts "连接Jenkins出错:#{e.message}"
    raise
  end
end

# 调用示例:替换为你的Jenkins API地址
jenkins_api_endpoint = 'https://your-external-jenkins-domain/api/json?tree=version'
fetch_jenkins_system_info(jenkins_api_endpoint)

关键注意事项

  • Docker环境的代理变量覆盖:如果你的Docker容器启动时注入了HTTP_PROXY/HTTPS_PROXY环境变量,Ruby的Net::HTTP默认会自动读取这些变量使用代理。显式设置proxy为nil会直接覆盖这个默认行为,确保请求不走代理。
  • HTTPS证书信任问题:如果Jenkins使用自签名证书或公司内部CA签发的证书,需要在Docker容器内配置信任对应的CA证书(将证书文件挂载到容器的/etc/ssl/certs目录),避免SSL验证失败。
  • 第三方HTTP客户端的适配:如果你的Ruby作业使用Faraday这类第三方HTTP库,同样可以通过配置跳过代理:
    require 'faraday'
    
    conn = Faraday.new(url: 'https://your-external-jenkins-domain') do |faraday|
      # 禁用代理
      faraday.proxy nil
      faraday.adapter Faraday.default_adapter
    end
    
    response = conn.get('/api/json?tree=version')
    puts response.body
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:34:49