IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Http代理

    vacuity发表于 2024-01-15 04:30:09
    love 0
    Http代理

    上个公司经常有一种需求:有些服务部署在内网(内网无法访问互联网),但是同时又需要访问一些我们需要的第三方服务,最开始我们采用的方式是对每个需要访问的外网单独申请外网权限。如果项目的机房权限管理严格审批繁琐的话,这个流程会变得很长。

    后来发现其实java的启动参数可以直接添加代理参数:

    -Dhttp.proxyHost=172.20.6.4 -Dhttp.proxyPort=7777 -Dhttps.proxyHost=172.20.6.4 -Dhttps.proxyPort=7777 -Dhttp.nonProxyHosts="172.20.6.*" -Dhttps.nonProxyHosts="172.20.6.*"
    

    这段的意思是http和https流量都经过 172.20.6.4 的 7777 端口代理出去,然后忽略 172.20.6.* 的地址,这个地址可以写多个。这个代理我们通常用的都是 goproxy :
    snail007/goproxy: 🔥 Proxy is a high performance HTTP(S) proxies, SOCKS5 proxies,WEBSOCKET, TCP, UDP proxy server implemented by golang. Now, it supports chain-style proxies,nat forwarding in different lan,TCP/UDP port forwarding, SSH forwarding.Proxy是golang实现的高性能http,https,websocket,tcp,socks5代理服务器,支持内网穿透,链式代理,通讯加密,智能HTTP,SOCKS5代理,黑白名单,限速,限流量,限连接数,跨平台,KCP支持,认证API。

    某次我在处理自己的服务时,需要在国内网络访问国外的某个服务,所以我就想在国外的某个服务器部署一下简单的 http 代理,但是这样就需要把我的代理服务暴露在公网,因此需要加一层认证服务。查了一下 goproxy 本身其实是支持认证的,但是属于付费模块,而我不想为这个简单的个人需求付费,因此只能自己尝试解决。

    在分析了需求以及参考了很多已有的项目之后,在chatgpt的帮助下实现了简单的http代理,目前支持安装为服务、服务的启动关闭以及重启、密码认证、请求方ip白名单、目标地址白名单等,详细信息可查看项目的说明文档:

    https://github.com/vacuityv/vacproxy

    主要配置如下:

    name: vacproxy
    
    bind: 0.0.0.0:7777
    
    # 日志配置/log file config,默认在当前目录的vacproxy.log
    #log: /Users/vacuity/log/vacproxy.log
    
    # 代理鉴权配置,enabled为true且user和password均不为空代表鉴权
    auth:
      enabled: false
      user: test
      password: 1234
    
    # 请求ip白名单,放空代表不限制
    inAllowList:
    #  - 127.0.0.1
    #  - 192.168.100.*
    
    # 目标域名/ip白名单,放空代表不限制
    outAllowList:
    #  - weixin.qq.com
    #  - alipay.com
    #  - baidu.com
    

    目前已经在个人项目使用了一段时间,运行良好。



沪ICP备19023445号-2号
友情链接