5

我们正在运行 Sonatype 的 Nexus 来存储我们所有的构建、缓存我们的依赖项等。但是,我想摆脱默认安装的端口8081URL,而是通过 Apache 代理通过 SSL 托管它。我已经设置了 Apachemod_proxy来代理它,这样就可以https://myserver.com/nexus启动 Nexus。我在虚拟主机配置中使用了以下配置指令:

# Configure mod_proxy to be used for proxying URLs on this site to other URLs/ports on this server.
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
<Proxy *>
  AddDefaultCharset off
  Order deny,allow
  Allow from all
</Proxy>

# Proxy the Sonatype Nexus OSS web application running at http://localhost:8081/nexus
<Location /nexus>
  ProxyPass http://localhost:8081/nexus
  ProxyPassReverse http://localhost:8081/nexus
</Location>

这似乎与Running Nexus Behind a Proxy中的说明相匹配。但是,我无法清除 Nexus 中的“基本 URL”设置:它不会让我将其留空。

一切正常:我可以通过 HTTPS URL 访问 Nexus,登录并执行大多数 GUI 功能

但是,在登录时,我收到以下警告消息:

警告:基本 URL 设置http://myserver.com/nexus与您的实际 URL 不匹配!如果您正在运行 Apache mod_proxy,这里有更多关于使用它配置 Nexus 的信息。

并不是 GUI 中的所有东西都能正常工作。到目前为止,我注意到以下几点:

  • 系统提要:给出以下错误:

    访问 /nexus/service/local/feeds 时出现问题。原因:

    请求标识的资源只能根据请求中发送的接受头生成具有不可接受的内容特征的响应实体

    Nexus 返回错误:错误 406:请求标识的资源仅能够生成响应实体,其内容特征根据请求中发送的接受标头不可接受

  • 删除托管存储库:我检查并删除了几个空且不需要的存储库。但是,在确认删除后,只删除了第一个。我必须登录该8081站点才能删除任何其他站点。

4

2 回答 2

4

根据文档,看起来更好的解决方案可能是将 RequestHeader 添加到 Apache 配置:

RequestHeader set X-Forwarded-Proto "https"

我尝试了接受的答案,这似乎有效,但是一旦我添加了 RequestHeader,我就能够取消选中 Force URL 并清除警告。不过,我还没有测试过 OP 描述的其他行为。

于 2016-04-15T01:17:28.313 回答
3

您只需要在 Administration->Server 配置屏幕中调整 baseUrl 设置。设置您正在使用的 url,然后单击 Force Base Url 选项。

于 2013-09-30T16:06:53.357 回答