Nexus代理Docker Hub:4045端口仅本地可访问,外部无法连接
Nexus Docker代理仓库外部无法访问问题排查
现象总结
- Nexus已成功代理Maven、NuGet仓库
- 新增Docker代理仓库并启用4045端口HTTP连接器,已关闭服务器防火墙
- 本地执行
curl http://localhost:4045/v2/返回如下未授权响应(说明本地端口监听正常):{"errors":[{"code":"UNAUTHORIZED","message":"access to the requested resource is not authorized","detail":null}]}
- 执行
curl http://xxx.yyy.zzz.kkk:4045/v2/(服务器IP)时超时,外部无法访问该端口
排查与解决步骤
1. 调整Nexus全局监听地址
Nexus默认仅绑定127.0.0.1,导致外部无法访问。操作如下:
- 打开Nexus安装目录下的
etc/nexus-default.properties文件 - 修改
application-host配置为0.0.0.0(允许所有IP地址访问) - 重启Nexus服务
2. 确认端口监听状态
在服务器上执行命令,检查4045端口是否绑定到所有IP:
netstat -tulpn | grep 4045 # 或使用ss命令 ss -tulpn | grep 4045
若输出显示127.0.0.1:4045,说明端口仅本地监听,需调整上述全局监听地址或Docker连接器的绑定地址。
3. 检查Docker连接器配置
结合你的配置截图,需确认:
- 连接器的绑定地址设置为
0.0.0.0(而非127.0.0.1) - 4045端口未被其他进程占用(可通过上述
netstat/ss命令排查)
4. 验证网络安全规则
即使关闭服务器防火墙,仍需确认:
- 若为云服务器,检查云服务商的安全组是否开放4045端口的入站规则
- 测试时使用的服务器IP是否与网络环境匹配(公网IP对应公网访问,内网IP对应内网访问)
5. 关于UNAUTHORIZED响应的说明
本地返回的未授权响应是正常现象:Nexus Docker仓库默认要求认证访问,可通过以下步骤解决:
- 在Nexus中创建拥有该Docker仓库权限的用户
- 执行
docker login xxx.yyy.zzz.kkk:4045完成登录后,即可正常访问仓库
内容的提问来源于stack exchange,提问作者Roberto Benazzato
相关产品推荐
相关产品推荐

