4

(主な質問の下部にある更新、以下は余分な詳細かもしれません)

Apache が期待どおりにリバース プロキシしないという興味深い問題があります。

基本的に、自分のウェブサイトで相対パスに移動するリンクをクリックすると、URLが からのコンテンツであると/app1予想されます。代わりに、ブラウザは直接.external.company.ca/app1internal.company.ca/some_appinternal.company.ca/some_app

302などはありません。まっすぐそこにあります。internal.company.caこれは、リバース プロキシ構成を除いて構成のどこにも言及されていないため、私には奇妙です。そのため、ブラウザがドメインをどのように学習しているかはまったくわかりません。

これは、クライアント (ブラウザー) の観点からの Fiddler のキャプチャで、次のリンクをクリックした直後の動作を示しています(緑の名前がで、黒の名前がで、パスが で/app1あることを信頼する必要があります)。external.company.cainternal.company.com/some_app/blahblah

ここに画像の説明を入力

この時点以降に起こることはすべて、internal.company.com. もちろん、これは本番環境ではまったく機能しません。

以下は、検討用の Apache 構成ファイルの (省略された) バージョンです。

<VirtualHost *:80>
    # rewrite rules to 443
</VirtualHost>

<VirtualHost *:443>
    ServerName external.company.ca
    ServerAlias external.company.com

    # Logging rules.........

    SSLEngine on
    SSLProxyEngine on
    SSLProxyVerify none

    # Most of this is off for testing purposes, adding in case it matters

    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off

    # more SSL stuff.... Now on to the interesting part

    ProxyPreserveHost On
    ProxyPass /app1 https://internal.company.com/some_app
    ProxyPassReverse /app1 https://internal.company.com/some_app
</VirtualHost>

ある時点で、Cookie が別のドメイン (前が .ca、後ろが .com) にあるため、Cookie が問題を引き起こしているのではないかと考えましたが、リバース プロキシが正しく機能していれば、ブラウザーはそれほど賢明ではないと思います。 . 上記に何か問題がある人はいますか?

アップデート

私は犯人を見つけました:

<script type="text/javascript">window.location.assign('https://internal.company.com/app1/login?redirectUrl=' + encodeURIComponent(window.location.pathname + window.location.hash));</script>

問題は、Apache を使用してこの絶対 URL をどのように書き換えるかということです。hrefmod_proxy_html が要素の属性 (要素など) を変更することは知ってaいますが、要素自体の任意のデータを書き換えることはできますか?

内部アプリケーションはベンダーから提供されたものであり、変更を加えて上記のようなコードを削除することは可能かもしれませんが、代替手段があるかどうかを確認するために、今のところそのパスから離れることをお勧めします。

4

2 に答える 2

0

潜在的に安全な解決策は、mod_substituteを使用することです。ProxyHTMLExtendedを検討することもできますが、その置換は非常に残忍で、あちこちで JavaScript が壊れることがあります。

編集: 現在 ProxyHTMLExtended を使用していることに気付きました。私の悪い。あなたが強調したように、それは問題に対するかなり残忍で危険な解決策です。

于 2015-07-28T11:43:24.663 に答える