搭建 nexus 私服的一些问题记录
工作原因,需要搭建自己公司项目的 maven 私服。前置条件是使用 nexus 的 oss3.27,nginx 使用系统默认的 nginx1.8,使用阿里云 ECS,购买了免费的 ssl 证书。
仅记录一些遇到的蹊跷问题~
下载的 nexus 包打开之后,包含两个主要目录,分别是 :nexus和 sonatype-work 目录。其中:
nexus:是 nexus 的应用目录,包含启动 nexus 所需的一些应用支持,比如 jetty。
sonatype-work:是 nexus 的数据目录。
1. nexus用户问题
nexus强烈建议创建独立的用户用于启动 nexus。这样会带来2个附加问题:
其一,需要修改nexus/bin/nexus.rc 文件,填充里面的启动用户设置
其二,有时手工启动可能会忘了切换到 nexus 用户,使用 root 启动后在数据目录中建立的缓存,后续切换到 nexus 启动时会因为权限问题无法删除,而导致 nexus 无法启动。
2.目录问题
一般情况下,将 nexus 和 sonatype-work 放在平级即可。但有时可能会放在不同的目录,此时需要修改 nexus/bin/nexus.vmoptions文件中关于:data、log、tmp 几个配置的设置值,不然会导致 nexus 无法启动。
3.端口和路径问题
多数时候,我们肯定不会让 nexus 直接运行在80端口,多数是前置一个 nginx 转发指定目录。此时可以修改:sonatype-work/nexus3/etc 中的nexus.properties文件。修改其中的 application-port 和nexus-context-path 两个配置项
4.nginx使用 https 的问题
前置的 nginx 如果使用 http 协议访问,基本没什么特殊注意的,常规配置即可。但是如果使用了 https,需要注意下面两项的设置:
proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto "https";
如果使用常见的方式,将 Host 设置为$http_host 会导致转发后,nexus 中的静态资源依旧是 http 方式载入,导致无法正常访问。因此要改为:$host,同时增加 X-Forwarded-Proto 的配置。