Nexus(3.2)基本URL被忽略?

时间:2017-02-06 00:21:23

标签: nginx nexus

我可以在我的服务器端口8081上运行Nexus 3.2.0-01而没有任何问题,但是我想将其作为https://HOST/nexus/运行,通过nginx反向代理。

根据文档,我需要设置一个基本URL功能,我有。然后我将其添加到我的nginx配置中:

location /nexus/ {
    proxy_pass http://localhost:8081/;

    # Rewrite HTTPS requests from WAN to HTTP requests on LAN                   
    proxy_redirect http:// https://;

    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 "https";
}

执行此操作后,我可以访问Nexus但没有加载图片,javascript无法加载等等。查看Chrome的控制台,看起来Nexus想要访问以下网址:

https://HOST/static
https://HOST/service
https://HOST/repository

而不是:

https://HOST/nexus/static
https://HOST/nexus/service
https://HOST/nexus/repository

我找不到任何方法来配置Nexus实际上全面利用基本URL功能。

我试过了:

  • 添加/删除X-Forwarded-Proto
  • 将位置设置为^〜/ nexus /
  • 启用和禁用proxy_redirect

但没有运气(不是我希望生成的URL能够根据nginx配置引用/ nexus,我想不出其他任何事情可以尝试)。

最后,我为/ static,/ service和/ repository添加了proxy_passes(假设我没有遗漏任何内容),乍一看它似乎有效,但我还没有尝试发布或其他很多。

Nexus不会正确使用基本网址,我做错了什么?

3 个答案:

答案 0 :(得分:2)

如果您在nginx(或其他反向代理)后面运行nexus3的Docker化版本,则可以使用环境变量NEXUS_CONTEXT来设置新上下文。

例如在我的docker compose中:

nexus:
   image: sonatype/nexus3:3.11.0
   ports:
     - 8081:8081
   networks:
     - my_net
   environment:
      NEXUS_CONTEXT: nexus

答案 1 :(得分:1)

如果您想在" /"以外的上下文路径上运行Nexus;您必须调整Nexus实际运行的上下文路径。编辑" sonatype-work / nexus3 / etc / nexus.properties并设置" nexus-context-path = / nexus"。请参阅此处了解我们的其他建议:

http://books.sonatype.com/nexus-book/reference3/index.html

答案 2 :(得分:0)

nginx和nexus的基本路径应匹配。为此,应通过设置ENV NEXUS_CONTEXT来更改nexus.properties上的nexus-context-path。

我已经使用其Helm图表在Kubernetes上部署了关系,但实际上应该是相同的。

如果您使用头盔chart,则可以将其添加到values.yaml

nexus:
  env:
    - name: NEXUS_CONTEXT
      value: nexus