3. Nexus基础配置:管理员密码重置、匿名访问控制、SMTP邮件配置、HTTPS证书配置、系统健康检查

Nexus Repository Manager 在首次安装或长期运行后,管理员需要完成一系列基础配置以确保系统的安全性、可访问性与稳定性。本章将围绕五个核心配置项展开:管理员密码重置、匿名访问控制、SMTP 邮件服务、HTTPS 证书绑定以及系统健康检查。这些配置是 Nexus 投入生产环境前的必要步骤,也是后续制品分发接口调用的安全基石。

3.1 管理员密码重置

Nexus 默认管理员账号为 admin,初始密码存储在 admin.password 文件中。若密码丢失或需要强制重置,可通过以下两种方式恢复。

3.1.1 通过文件恢复(首次启动)

  1. 登录 Nexus 服务器,进入数据目录(默认 /nexus-data)。
  2. 查看 admin.password 文件内容:cat admin.password。
  3. 使用该密码登录后,系统会强制要求修改密码。

3.1.2 通过命令行强制重置(忘记密码)

# 停止 Nexus 服务
systemctl stop nexus

# 删除或重命名 admin.password 文件(触发重新生成)
mv /nexus-data/admin.password /nexus-data/admin.password.bak

# 启动 Nexus 服务
systemctl start nexus

# 等待服务就绪后,查看新生成的密码
cat /nexus-data/admin.password
注意: 重置密码后,所有使用旧密码的 API 和自动化脚本将失效。请及时更新 CI/CD 流水线中的凭证。

3.2 匿名访问控制

匿名访问允许未经认证的用户浏览和下载制品。在生产环境中,建议根据安全策略严格限制匿名权限。配置路径:Administration → Security → Anonymous Access。

配置项 说明 推荐值
Allow anonymous users to access the server 是否允许匿名访问 false(生产环境)
Realm Name 匿名用户所属域 NexusAuthorizingRealm
Username 匿名用户映射的本地账号 anonymous

关闭匿名访问后,所有制品分发接口调用必须携带有效的认证凭证(如 Basic Auth 或 Bearer ),否则返回 401 Unauthorized。

3.3 SMTP 邮件配置

SMTP 配置用于发送密码重置邮件、系统告警通知以及用户邀请。配置路径:Administration → System → Email。

3.3.1 核心参数

参数 示例值 说明
Host smtp.example.com SMTP 服务器地址
Port 587 端口(465/587/25)
Username nexus@example.com 认证用户名
Password ******** 认证密码或应用专用密码
Use SSL/TLS true 启用加密传输

3.3.2 测试邮件发送

配置完成后,点击 Verify Email Configuration 输入测试收件人地址。若收到测试邮件,则配置成功;否则检查防火墙、端口及认证信息。

最佳实践: 使用第三方邮件服务(如 SendGrid、Amazon SES)时,建议使用应用专用密码而非主账号密码,并开启 TLS 加密。

3.4 HTTPS 证书配置

Nexus 默认使用 HTTP 协议。为保障制品分发接口调用的数据传输安全,必须启用 HTTPS。支持两种方式:使用内置 Jetty 配置或反向代理(Nginx/HAProxy)。

3.4.1 内置 Jetty HTTPS 配置

  1. 准备 SSL 证书(PEM 格式)和私钥文件。
  2. 将证书和私钥复制到 /nexus-data/etc/ssl/ 目录。
  3. 修改 /nexus-data/etc/nexus.properties:
application-port-ssl=8443
ssl.etc=/nexus-data/etc/ssl
nexus-args=${jetty-etc}/jetty.xml,${jetty-etc}/jetty-https.xml,${jetty-etc}/jetty-http-redirect-to-https.xml
  1. 重启 Nexus 服务:systemctl restart nexus。
  2. 访问 https://<host>:8443 验证。

3.4.2 反向代理 HTTPS 配置(推荐)

使用 Nginx 作为反向代理,将 HTTPS 流量转发至 Nexus 的 HTTP 端口(8081)。配置示例:

server {
    listen 443 ssl;
    server_name nexus.example.com;

    ssl_certificate /etc/ssl/certs/nexus.crt;
    ssl_certificate_key /etc/ssl/private/nexus.key;

    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
性能提示: 反向代理模式下,Nexus 本身仍使用 HTTP,SSL 卸载由 Nginx 完成,可减少 Nexus 的 CPU 开销,提升 API 响应速度。

3.5 系统健康检查

健康检查用于评估 Nexus 的运行状态,包括存储、数据库、线程池和系统资源。Nexus 提供内置健康检查端点及管理界面。

3.5.1 内置健康检查端点

通过 REST API 获取系统健康状态:

# 基础健康检查(无需认证)
curl -X GET http://localhost:8081/service/rest/v1/status

# 详细健康检查(需管理员权限)
curl -X GET -u admin:password http://localhost:8081/service/rest/v1/status/check

3.5.2 关键检查项

检查项 正常状态 异常处理
System Status RUNNING 检查 JVM 堆内存、磁盘空间
Database CONNECTED 检查 OrientDB 或 H2 数据库连接
Blob Store AVAILABLE 检查存储后端(文件系统/S3)
Thread Pool ACTIVE 检查线程池队列积压情况

3.5.3 健康检查流程图

Nexus 系统健康检查流程 健康检查请求 系统状态检查 数据库连接检查 Blob Store 检查 线程池检查 汇总检查结果 返回健康状态 JSON

3.6 配置验证清单

完成上述配置后,建议使用以下清单进行验证,确保所有配置项生效:

  • 密码重置: 使用新密码登录 Web UI 和 API。
  • 匿名访问: 关闭匿名后,使用 curl 不带认证访问仓库,确认返回 401。
  • SMTP: 触发密码重置流程,检查是否收到邮件。
  • HTTPS: 使用浏览器访问 https://<host>:8443,确认证书有效且无安全警告。
  • 健康检查: 调用 /service/rest/v1/status/check,确认所有检查项为绿色。
自动化建议: 将健康检查端点集成到 Prometheus + Grafana 监控体系中,设置告警规则,当系统状态非 RUNNING 或 Blob Store 不可用时自动通知运维团队。