6

Я устанавливаю прокси в apache через директивы ProxyPass и ProxyPassReverse для некоторых URL:

ProxyPass /mypath http://myotherserver.com
ProxyPassReverse /mypath http://myotherserver.com

Однако myotherserver.com требует (базовой) аутентификации. Если я ничего не делаю, эта аутентификация передается конечному клиенту. По какой-то причине я не хочу этого, и я хотел бы добавить учетные данные непосредственно в моей конфигурации apache. Как я могу это сделать ? Я старался:

ProxyPass /mypath http://user:pass@myotherserver.com
ProxyPassReverse /mypath http://user:pass@myotherserver.com

Но это не похоже на работу. Заранее спасибо за помощь.

2 ответа2

14

Я действительно нашел решение. Я надеюсь, что это может быть полезно для других людей:

Запустите следующий скрипт на python, чтобы получить hash аутентификации:

import base64
hash = base64.b64encode(b'user:password')

Добавьте следующую директиву в вашу конфигурацию apache:

<Location /mypath>
RequestHeader set Authorization "Basic $hash"
</Location>

где $hash заменяется ранее вычисленной строкой.

Убедитесь, что mod_proxy и mod_headers (a2enmod proxy и a2enmod headers). Перезапустите apache2, и все готово :)

1

Спасибо @ ThR37 - это больше комментарий для вашего ответа, но не может отформатировать его там. :/

Мне нужно было сделать это с mod_rewrite, но ваш метод был использован:

  RewriteEngine On
  SSLProxyEngine on

  RewriteCond %{REQUEST_URI} ^/34506a81-1a6d-4596-beaf-580da9c98cca$
  SetEnvIf REQUEST_URI "/34506a81-1a6d-4596-beaf-580da9c98cca" DOAUTH
  RequestHeader set Authorization "Basic dXNlcjpwYXNzd29yZA==" env=DOAUTH
  RewriteRule /34506a81-1a6d-4596-beaf-580da9c98cca https://www.example.com/my/path [P,L]
  ProxyPassReverse /34506a81-1a6d-4596-beaf-580da9c98cca https://www.example.com/my/path

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .