一部のURLのディレクティブProxyPass
およびProxyPassReverse
を使用して、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]
しかし、動作しないようです。よろしくお願いします。
私は実際に解決策を見つけました。他の人にも役立つことを願っています:
次の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を再起動すると、完了です:)
ありがとう@ 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