当前位置: 首页 > news >正文

使用 Docker 部署 Squid 为 Kubernetes 中的 Nexus3 提供公网代理访问

#作者:闫乾苓

文章目录

  • 背景
  • 网络架构
  • 部署 Squid(Docker 方式)
    • 1. 准备 Squid 配置文件
    • 2. 启动 Squid 容器
    • 3. 验证 Squid 出网功能
  • 总结

背景

在企业内部网络环境中,生产环境通常无法直接访问公网。
在 Kubernetes(K8s)中部署的 Nexus3 仓库,若需要从公网同步 Maven、npm 等依赖,就必须通过一个受控的出网代理。
本文介绍一种常见的解决方案:

  • 在 DMZ 区部署 Squid 作为 HTTP/HTTPS 代理
  • Squid 节点可直接访问公网
  • Nexus3 与 Squid 之间网络可通
  • Nexus3 配置全局 HTTP Proxy 指向 Squid,实现从公网下载构件并缓存到 Nexus3

网络架构

在这里插入图片描述

  • Squid:位于 DMZ,可访问公网
  • Nexus3:K8s 内部部署,无法直连公网,但能访问 Squid
  • 客户端:访问 Nexus3 的 Proxy 仓库,由 Nexus3 再通过 Squid 取数据

部署 Squid(Docker 方式)

1. 准备 Squid 配置文件

在 DMZ 节点创建目录 /opt/squid/conf 并创建配置文件 squid.conf:

# 监听端口
http_port 3128# 定义允许访问的客户端(Nexus3 IP)
acl nexus3_server src 192.168.61.21/32
# 如果你在 192.168.61.22 测试,也加上它
acl test_client src 192.168.61.22/32# 定义安全端口
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
acl Safe_ports port 1025-65535# 定义 CONNECT 方法
acl CONNECT method CONNECT# 先放行 Nexus3 和测试机的 CONNECT 请求到安全端口
http_access allow nexus3_server CONNECT SSL_ports
http_access allow test_client CONNECT SSL_ports# 放行 Nexus3 和测试机的普通 HTTP 请求
http_access allow nexus3_server
http_access allow test_client# 最后拒绝所有其他访问
http_access deny all# 日志位置
access_log stdio:/var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log none# 禁用缓存
cache deny all

2. 启动 Squid 容器

docker run -d \--name squid \--restart unless-stopped \-p 3128:3128 \-v /opt/squid/conf/squid.conf:/etc/squid/squid.conf \ubuntu/squid:5.2-22.04_beta

这里没有挂载 /var/log/squid 和 /var/spool/squid,表示不做日志/缓存持久化,适合仅做转发的场景。

3. 验证 Squid 出网功能

在 允许的客户端 IP 上执行:

curl -x http://node2:3128 -I https://repo1.maven.org/maven2/

正常返回 HTTP/1.1 200 Connection established + 目标站响应,则说明 Squid 工作正常。

配置 Nexus3 全局代理

  1. 登录 Nexus3 Web 管理界面
  2. Administration → System → HTTP
  3. 填写:
  • HTTP Proxy Host: node2(或 Squid 节点的 IP)
  • Port: 3128
  1. 保存
    配置完成后,Nexus3 的所有 Proxy 仓库(Maven Central、npmjs 等)都会通过 Squid 出网。

Nexus3 创建 Proxy 仓库

  1. Repositories → Create repository → maven2 (proxy)
  2. 填写:
  • Name: maven-central-proxy
  • Remote Storage: https://repo.maven.apache.org/maven2/
  1. 保存
    客户端访问 maven-central-proxy 时,如果依赖不在 Nexus3 中,Nexus3 会:
  • 通过 Squid 请求公网
  • 下载依赖并存储到本地
  • 将结果返回给客户端

手动测试 Squid 下载文件
即使不经过 Nexus3,也可用 curl / wget 直接通过 Squid 下载公网文件。
curl 方式:

curl -x http://node2:3128 \-o HTTPClient-0.3-3.jar \https://repo.maven.apache.org/maven2/HTTPClient/HTTPClient/0.3-3/HTTPClient-0.3-3.jar

wget 方式:

wget -e use_proxy=yes \-e http_proxy=http://node2:3128 \-e https_proxy=http://node2:3128 \https://repo.maven.apache.org/maven2/HTTPClient/HTTPClient/0.3-3/HTTPClient-0.3-3.jar

下载完成后可验证文件完整性:
sha256sum HTTPClient-0.3-3.jar

注意事项

  • 安全控制:务必限制 Squid 只接受 Nexus3 节点的请求,避免成为开放代理
  • 缓存策略:本方案禁用 Squid 磁盘缓存,让 Nexus3 管理构件缓存
  • 日志审计:若需审计出网记录,可开启 /var/log/squid/access.log 持久化
  • 高可用:可在 DMZ 部署多个 Squid 节点,结合 K8s Service 或负载均衡

总结

通过在 DMZ 部署 Squid 代理,可以在不直接暴露 Kubernetes 内部服务到公网的情况下,让 Nexus3 安全地访问 Maven Central、npmjs 等外部仓库。
这种方案结构清晰、安全可控,适合大多数内网隔离环境下的制品仓库出网需求。

http://www.dtcms.com/a/356315.html

相关文章:

  • Windows12概念曝光,巧用远程控制工具抢先体验
  • 人脸识别“不备案“有哪些后果?
  • 公司内网部署离线deepseek+docker+ragflow本地模型实战
  • Day15 Logurs框架学习
  • Elasticsearch核心配置与性能优化
  • Linux 线程调度核心要点
  • 期权合约作废了怎么处理?
  • AI共链·智存未来 | 绿算技术受邀出席华为AI SSD发布会
  • 若依微服务一键部署(RuoYi-Cloud):Nacos/Redis/MySQL + Gateway + Robot 接入(踩坑与修复全记录)
  • 吱吱企业通讯软件可私有化部署,构建安全可控的通讯办公平台
  • C++异常处理指南:构建健壮程序的错误处理机制
  • 2025年渗透测试面试题总结-39(题目+回答)
  • FDTD_mie散射_仿真学习(2)
  • AWS集成开发最佳实践:构建高效可靠的云管理平台
  • 海运业务怎么管?解析海运货代系统的核心功能模块
  • Blender建模软件基本操作--学习笔记1
  • CSS text-decoration-thickness:精细控制文本装饰线粗细的新属性
  • Git 9 ,.git/index.lock 文件冲突问题( .git/index.lock‘: File exists. )
  • 亚马逊巴西战略升级:物流网络重构背后的生态革新与技术赋能之路
  • 基于SpringBoot的足球青训俱乐部管理系统
  • 【数组特殊排序最小最大次小次大依次类推规律放置】2022-10-27
  • 香港电讯为知名投资公司搭建高效、安全IT管理服务体系
  • Java学习day_13之API(常用API对象克隆)
  • 高效接入:Suno API 与主流编程语言的结合
  • 从“安全诉讼”说起:奖励模型(Reward Model)是LLM对齐的总阀门(全视角分析)
  • 龙迅#LT7641GX适用于四路HDMI2.1/DP/TPYE-C转HDMI2.1混切应用,分辨率高达8K60HZ!
  • 【谷歌浏览器】浏览器实用自用版——谷歌浏览器(Google Chrome)离线纯净版安装 官方版无任何捆绑及广告 【离线安装谷歌浏览器】
  • 智能体开发:学习与实验 ReAct
  • AI Agent实战:提升大模型应用能力——提示链、响应净化与结构化输出技术详解
  • C# WinForms 使用 CyUSB.dll 访问 USB 设备