EKS集群中私有Ingress Controller下Sonatype Nexus登录失败求助
EKS集群Nexus私有Ingress登录异常排查
问题背景
在EKS集群中部署了Sonatype Nexus应用,已配置多个本地用户与角色。同时通过nginx Ingress控制器Helm Chart部署了两个Ingress控制器:一个对应AWS Classic Load Balancer的公网Ingress控制器,一个私有Ingress控制器,Nexus通过这两个控制器对外提供服务。
故障现象
通过公网Ingress控制器访问时,Sonatype Nexus登录完全正常;但使用相同用户凭证通过私有Ingress控制器登录时,Nexus UI提示“用户名或密码错误”或“无应用使用权限”。查看Nexus Pod日志,显示用户会话已创建,但仍无法完成登录。
已完成的排查动作
- 验证用户凭证正确性,确认用户名和密码无误;
- 对比公、私Ingress控制器的配置,确保二者配置相近;
- 检查私有Ingress控制器服务的注解,确认SSL证书、SSL协商策略及SSL端口设置正确;
- 确认DNS解析配置正常,私有Ingress控制器可解析Nexus服务器的主机名;
- 检查Nexus服务器与私有Ingress控制器的安全组规则,确保必要通信端口已开放;
- 检查Nexus的认证与安全相关配置,确认配置正确;
- 监控Nexus服务器与私有Ingress控制器的日志,未发现与登录失败相关的错误或警告。
初步假设
- 私有Ingress控制器与Nexus服务器之间可能存在网络或连通性问题,但不确定如何验证;
- 私有Ingress控制器可能存在证书信任问题,但不确定如何验证该假设。
排查建议与解决指导
网络连通性验证
- 在私有Ingress控制器的Pod内,执行
curl -v http://nexus-service:8081/service/rest/v1/security/users,检查是否能正常获取响应,重点查看请求头、响应头的完整性; - 在Nexus Pod和私有Ingress Pod上分别执行
tcpdump抓包,分析登录请求的完整流程:确认请求是否完整到达Nexus,响应是否正确返回给Ingress,特别关注Cookie、Authorization头的传递情况; - 检查EKS集群内的网络策略,确认没有限制私有Ingress控制器访问Nexus Pod的规则;
- 验证私有Ingress对应的内部LB(如NLB/ALB)的健康检查状态,确认流量能正确转发到Ingress Pod。
证书与SSL相关验证
- 在私有网络内的测试机上执行
openssl s_client -connect <私有Ingress域名>:443,检查证书链是否完整,是否存在证书不被信任的情况; - 确认Nexus正确识别请求的协议和主机名:私有Ingress需添加以下注解,确保
X-Forwarded-Proto、X-Forwarded-Host头正确传递给Nexus,避免会话Cookie属性错误导致登录异常:nginx.ingress.kubernetes.io/ssl-redirect: "true" nginx.ingress.kubernetes.io/configuration-snippet: | proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; - 对比公网Ingress和私有Ingress的Cookie传递配置,检查私有Ingress是否遗漏
proxy_set_header Cookie $http_cookie;或对Cookie进行了截断、修改; - 查看Nexus的
nexus.properties文件,确认nexus-args中配置了兼容的SSL协议(如-Dnexus.ssl.protocols=TLSv1.2,TLSv1.3),确保与私有Ingress的SSL协商策略匹配。
会话与Cookie相关排查
- 在浏览器开发者工具中,对比公网和私有Ingress访问时的
NXSESSIONIDCookie属性(包括Domain、Path、Secure、HttpOnly、SameSite),确认二者一致; - 使用浏览器无痕模式访问私有Ingress的Nexus,排除本地Cookie缓存的干扰;
- 检查Nexus的会话超时配置,确认私有网络内的请求未被强制终止。
其他排查点
- 检查私有Ingress控制器的Helm Chart配置,确认是否开启了modsecurity等特殊nginx模块,避免这些模块拦截登录请求的关键内容;
- 对比公、私Ingress的
Ingress资源配置,重点检查host、tls、annotations字段,确保没有差异导致请求处理逻辑不同; - 在私有网络内执行
curl -X POST -u <用户名>:<密码> https://<私有域名>/service/rest/v1/security/token,验证API层面的认证是否正常,排查UI层面的跳转异常问题。
内容的提问来源于stack exchange,提问作者Bala krishna
相关产品推荐
相关产品推荐

