nginx - Nexus (3.2) 基本 URL 被忽略?

标签 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 想要访问 URL,例如:
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 不会正确使用基本 URL?

    最佳答案

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

    例如在我的 docker compose 中:

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

    关于nginx - Nexus (3.2) 基本 URL 被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42058873/

    相关文章:

    nginx - 使用 Nginx 反向代理运行 Apache OpenMeetings?

    tomcat - 请求上下文路径 grails spring security

    python - 如何使用 DRY 配置部署多个 Django 站点?

    gradle - 使用持续集成在 Gradle 中发布快照与发布版本

    java - Maven 无法解析 SNAPSHOT 依赖项

    jenkins - 无法执行目标 org.apache.maven.plugins :maven-deploy-plugin:2. 7:在项目上部署默认部署

    mysql - 在 gitlab CE 捆绑服务器上安装 phpmyadmin

    regex - 如何在 nginx "if"正则表达式中使用变量

    nexus repo 的 Docker 登录错误

    docker - Jenkins 的工作是从 Nexus 存储库中删除旧的 Docker 镜像