Apache mod_rewrite с заголовком авторизации перенаправления отбрасывания

У меня есть несколько правил Apache mod_rewrite, настроенных для перенаправления развертываний Maven с одного URL / сервера на другой. Мы находимся в процессе перехода с Nexus на Artifactory, и нам необходимо настроить эти перенаправления, чтобы команды могли использовать URL-адреса Nexus в течение определенного периода времени, не прерывая сборки. Вот пример нашего правила mod_rewrite:

RewriteRule ^/nexus/content/repositories/nexus-repository/(.*)$ https://artifactory-instance.net/repository/$1 [NE,R=301,L]

Правило успешно перенаправляет запросы GET на новый URL-адрес Artifactory, но у нас возникла проблема с удалением заголовка авторизации при перенаправлении. Мы получаем ошибку 401, и, запустив команду cURL PUT для отправки отдельных артефактов, я могу увидеть, что заголовок авторизации удаляется:

...
> PUT /nexus/content/repositories/nexus-repository/com/maven/hello-world/1.0.0/hello-world-1.0.0.jar HTTP/1.1
> Host: nexus-instance.com
> Authorization: Basic XXXXXXXXXX
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Length: 2540
> Expect: 100-continue
> 
< HTTP/1.1 301 Moved Permanently
< Date: Thu, 23 Apr 2020 17:27:22 GMT
< Server: Apache/2.4.37 (Red Hat Enterprise Linux)
< Location: https://artifactory-instance.net/repository/com/maven/hello-world/1.0.0/hello-world-1.0.0.jar
< Content-Length: 311
< Connection: close
< Content-Type: text/html; charset=iso-8859-1
...
> PUT /repository/com/maven/hello-world/1.0.0/hello-world-1.0.0.jar HTTP/1.1
> Host: artifactory-instance.net
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Length: 2540
> Expect: 100-continue
> 
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 401 Unauthorized
< Date: Thu, 23 Apr 2020 17:27:22 GMT
...
* Authentication problem. Ignoring this.
< WWW-Authenticate: Basic realm="Artifactory Realm"
< Content-Type: application/json;charset=ISO-8859-1
< Transfer-Encoding: chunked
...

cURL имеет флаг под названием - доверенное местоположение . Когда я применяю его к своей тестовой команде cURL, он передает заголовок авторизации для перенаправления.

Мой вопрос: есть ли какой-нибудь эквивалент - доверенный местоположению в httpd? Что я могу сделать, чтобы передать заголовок аутентификации через перенаправление?

1
задан 23 April 2020 в 21:51
1 ответ

Я понял, что мне нужно, чтобы заставить это работать. mod_rewrite не заставит это работать, но с помощью mod_proxy я смог заставить это работать:

ProxyPreserveHost Off
SSLProxyEngine On

<Location /nexus/content/repositories/nexus-repository>
    ProxyPass https://artifactory-instance.net/repository
    ProxyPassReverse https://artifactory-instance.net/repository
</Location>

Он не будет перенаправлять пользователей на URL-адрес, но будет отображать контент Artifactory в URL-адресе нексуса.

0
ответ дан 28 April 2020 в 16:37

Теги

Похожие вопросы