具有自动身份验证的 Apache mod_proxy

具有自动身份验证的 Apache mod_proxy

ProxyPass我正在通过指令为ProxyPassReverse一些 URL在 apache 中设置代理:

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

但是,myotherserver.com需要 (基本) 身份验证。如果我什么都不做,此身份验证将传递给最终客户端。出于某种原因,我不想这样做,我想直接在我的 apache 配置中添加凭据。我该怎么做?我试过:

ProxyPass /mypath http://user:[email protected]
ProxyPassReverse /mypath http://user:[email protected]

但它似乎不起作用。提前感谢您的帮助。

答案1

我确实找到了解决方案。我希望它对其他人有用:

运行以下 Python 脚本来获取您的身份验证hash

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

在您的 apache 配置中添加以下指令:

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

其中$hash被替换为之前计算的字符串。

确保mod_proxymod_headers可用(a2enmod proxya2enmod headers)。重新启动 apache2,您就完成了 :)

答案2

谢谢@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

相关内容