Jenkins Fargate Plugin无法访问EC2上的Nexus等服务问题排查
一、解决Fargate Worker容器与EC2服务的通信问题
当前Fargate容器和EC2实例同VPC公有子网,但EC2上Nexus/SonarQube的443端口安全组白名单限制导致连接超时,可按以下步骤处理:
调整EC2服务的安全组入站规则
找到Nexus、SonarQube所在EC2实例的安全组,添加入站规则:- 规则类型:HTTPS(TCP 443)
- 源:选择Fargate Worker容器对应的安全组(直接用安全组作为源,比固定IP更灵活,适配Fargate容器动态IP的特性)
这样同VPC内的Fargate容器就能通过安全组规则允许访问EC2上的443端口服务。
验证网络连通性
在Fargate容器内执行curl -v https://[EC2私有IP]:443(使用EC2私有IP,同VPC内走内网通信,避免公网层面的额外限制),确认连接是否正常。
如果仍超时,检查子网的网络ACL:确保入站和出站规则允许443端口的流量,源/目标包含Fargate安全组的CIDR或整个VPC的CIDR范围。
二、关闭登录页面的替代方案
并非只能通过白名单实现,根据环境需求可选择以下方式:
反向代理+IP限制
用Nginx/Apache做反向代理,在代理层设置IP白名单仅允许内部IP访问,同时在后端服务(Jenkins/Nexus/SonarQube)中关闭登录验证。例如Jenkins可修改config.xml,设置<useSecurity>false</useSecurity>,但需确保代理层严格限制访问范围,避免暴露公网。VPC内部访问隔离
将Jenkins、Nexus、SonarQube的服务监听地址改为EC2私有IP,移除公网IP绑定,仅允许VPC内部资源(如Fargate容器、企业VPN接入)访问。这种方式下外部公网无法触及服务,可配合关闭登录验证(生产环境仍建议保留内部认证作为兜底)。完全关闭认证(仅限测试环境)
直接在服务配置中关闭登录验证:- Jenkins:全局安全配置中取消“启用安全”选项
- Nexus:修改
nexus.properties,设置nexus.security.authc.enabled=false(注意适配对应版本) - SonarQube:修改
sonar.properties,设置sonar.web.authentication=false
此方式仅适用于完全隔离的内部测试环境,生产环境禁止使用。
企业SSO集成+访问控制
集成LDAP/SAML等企业SSO,同时结合安全组/网络ACL限制仅授权IP访问,既实现内部用户无缝访问,又保留安全认证机制,适合生产环境。
内容的提问来源于stack exchange,提问作者Bilge Kaan Gençdoğan

