本文主要分享小规模开发测试环境下阿里云 EMR gateway 节点的替代方案,同时也为想寻找同时支持 HTTP proxy 和 websocket 的代理工具提供一些思路。传统的 HTTP proxy 有 Squid, 但是 Squid 对 HTTPS, HTTP/2 和 websocket 的支持不算太好。在大部分简单场景下,我推荐部署和配置极其简单的 Caddy, 配合 forwardproxy 插件配置起来非常简单。

到官网下载即可,选中 http.forwardproxy,可能需要根据自己的平台适配,如 Linux64 下可以如下安装。

curl https://getcaddy.com | bash -s personal http.forwardproxy

想作为系统启动服务进行管理可参考 Caddy 的 systemd 服务,见 caddy.service.

0.0.0.0:3128 {
    errors
    forwardproxy {
        basicauth your_user your_pass
        acl {
            allow 10.0.x.0/24
            deny all
        }
    }
}

其中的 ACL 规则和认证可根据自己集群的情况进行调整。配合 letsencrypt, Caddy 还可以支持 HTTP/2(HTTPS) 代理,很美好