小编Dav*_*ith的帖子

代理包存储库的最佳实践

我的公司网络中有一组 CentOS 服务器。出于安全原因,大多数服务器没有通用的出站互联网访问权限,除非这是服务器的核心功能要求。

当我需要更新软件包时,这会带来挑战。对于 yum 存储库,我目前从 Internet 镜像所有需要的存储库,并使镜像在 Intranet 内可用。我在我们的五个环境中保存每个 repo 的副本:dev、QA、staging 和两个生产数据中心。

我目前不解决特定于语言的包存储库。当服务器需要从 ruby​​gems、PyPI、PECL、CPAN 或 npm 进行更新时,它们必须获得临时出站互联网访问权限以获取包。我被要求开始镜像 ruby​​gems 和 PyPI,其余的可能会跟进。

所有这些都很笨拙,而且效果不佳。我想用一个环境中的单个缓存代理和其他环境中的四个菊花链代理替换它,以消除完整镜像的复杂性和磁盘开销。此外:

  • 它可以是正向或反向代理;每个包管理器都支持代理服务器或自定义存储库端点,可以是本地镜像或反向代理。
  • 它需要精细的访问控制,因此我可以限制哪些客户端 IP 可以连接到哪些 repo 域。
  • 客户端需要能够跟随重定向到未知域。您的原始请求可能仅限于 ruby​​gems.org,但如果该服务器向随机 CDN 返回 302,您应该能够遵循它。
  • 它应该支持 HTTPS 后端。我不一定需要模拟其他 SSL 服务器,但我应该能够通过 HTTP 重新公开 HTTPS 站点,或者终止并使用不同的证书重新加密。

我最初正在研究反向代理,而 Varnish 似乎是唯一一种允许我在代理中内部解析 302 重定向的代理。但是,免费版 Varnish 不支持 HTTPS 后端。我现在正在评估 Squid 作为转发代理选项。

这似乎应该是企业网络中一个相对普遍的问题,但我很难找到其他人如何解决这个问题的例子。有没有人实施过类似的东西,或者对如何最好地这样做有想法?

谢谢!

package-management proxy squid varnish repository

17
推荐指数
3
解决办法
5551
查看次数

标签 统计

package-management ×1

proxy ×1

repository ×1

squid ×1

varnish ×1