我可以在我的服务器端口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功能。
我试过了:
但没有运气(不是我希望生成的URL能够根据nginx配置引用/ nexus,我想不出其他任何事情可以尝试)。
最后,我为/ static,/ service和/ repository添加了proxy_passes(假设我没有遗漏任何内容),乍一看它似乎有效,但我还没有尝试发布或其他很多。
Nexus不会正确使用基本网址,我做错了什么?
答案 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"。请参阅此处了解我们的其他建议:
答案 2 :(得分:0)
nginx和nexus的基本路径应匹配。为此,应通过设置ENV NEXUS_CONTEXT来更改nexus.properties上的nexus-context-path。
我已经使用其Helm图表在Kubernetes上部署了关系,但实际上应该是相同的。
如果您使用头盔chart,则可以将其添加到values.yaml
nexus:
env:
- name: NEXUS_CONTEXT
value: nexus