Nexus показывает, что "путь к репозиторию должен иметь еще один" / "после начального" / "при загрузке с помощью cURL

Я запускаю свой Nexus OSS 3.14.0-04 за обратным прокси-сервером nginx, который выполняет аутентификацию с помощью nginx. С помощью сервера nginx мы выполняем аутентификацию через OpenID Connect, как описано здесь, что работает как шарм. Теперь мы хотим получить доступ к Nexus через Jenkins и / или curl без аутентификации OpenID Connect. Для этого я реализовал в конфигурации nginx следующий код:

server {
    resolver 127.0.0.11;
    listen       8443 ssl;
    server_name  nexus.my.domain;

    ssl_certificate      /home/appuser/data/certificates/cer.pem;
    ssl_certificate_key  /home/appuser/data/certificates/key.pem;

    access_log  /home/appuser/data/nginx/log/access_nexus.log;
    error_log   /home/appuser/data/nginx/log/error_nexus.log;

    error_page   500 502 503 504  /50x.html;

    #Allow large uploads of files
    client_max_body_size 4G;

    # optimize downloading files larger than 1G
    #proxy_max_temp_file_size 5G;

    set $session_secret abcdefghijklmnopqrstuvwxyz;
    location / {
        set $oidc_redirect_logout_url "false";
        access_by_lua_file /home/appuser/data/nginx/conf.d/oidc_nexus.lua;
        set $target_server nexus-internal.my.domain;
        proxy_pass https://$target_server:8443;
        proxy_redirect off;
        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";
        proxy_set_header X-Forwarded-Host $server_name;
    }
    location /repository {
        proxy_pass https://nexus-internal.my.domain:8443;
        proxy_redirect off;
        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 $scheme;
        proxy_set_header X-Forwarded-Host $server_name;
    }
}

Я отключил анонимную аутентификацию в нексусе и создал внутреннего пользователя нексуса "prj.nxs.myproject". Этот пользователь имеет роль "Администраторы MYPROJECT". Роль связана с привилегиями "просмотр репозитория" для каждого репозитория, относящегося к проекту (привилегии включают разрешения "просмотр, чтение, добавление, удаление").

Когда я подключаюсь к Nexus через браузер, это аутентификация через OIDC. Когда я просматриваю репозиторий maven и пытаюсь загрузить что-нибудь из него (например, https://nexus.my.domain/repository/MYPROJECT-maven-group/com/myproject/cip/myproject-cip/main/2.0.3/main-2.0.3.pom) в браузере браузер запрашивает аутентификацию. Я ввел учетные данные, и загрузка прошла успешно.

Теперь я пытаюсь повторить это из командной строки с помощью curl. Я сделал следующее:

curl -u prj.nxs.myproject:abcd1234 https://nexus.my.domain/repository/MYPROJECT-maven-group/com/myproject/cip/myproject-cip/main/2.0.3/main-2.0.3.pom

С помощью этой команды я получаю следующий ответ:

<html>
...
...
<body>
<div class="nexus-body">
  ...
  ...
  </div>
  <div class="content-body">
    <div class="content-section">
      Repository path must have another '/' after initial '/'
    </div>
      </div>
</div>
</body>
</html>

Когда я пытаюсь подключиться к серверу nexus напрямую с внутренним именем (и избегаю использования nginx),

curl -u prj.nxs.myproject:abcd1234 https://nexus-internal.my.domain/repository/MYPROJECT-maven-group/com/myproject/cip/myproject-cip/main/2.0.3/main-2.0.3.pom

я могу скачать файл. Похоже, это как-то связано с конфигурацией nginx. Я также попытался добавить конечное окончание '/' к proxy_pass в расположении '/repository' (это описано в документации nexus, а также здесь), но это также не увенчалось успехом и ничего не меняет.

Есть ли у кого-нибудь идея, что я могу сделать, чтобы выполнить базовую аутентификацию с помощью curl для загрузки контента из nexus?

С уважением

Дэйв

0 ответов

Другие вопросы по тегам