web-dev-qa-db-ja.com

リダイレクトが設定されている外部URLへのNginxリバースプロキシ

午後の紳士、

私の現在のセットアップは単一のサイトです。これを http://production.com と呼びましょう。これは、ポート80のNginxによって静的キャッシュとして提供され、バックグラウンドのApacheによってポート8080localhostで提供されます。本当に、これは非常にうまく機能します。

私が今やろうとしているのは、URL http://production.com/foobar を作成して、外部URLからのデータを含めることです http:// internal .com /

私が抱えている問題は、 http://internal.com/ を参照すると、自動的に http://www.internal.com/forum/forum)にリダイレクトされることです。 php これはvBulletinフォーラムであり、独自の内部リダイレクトがあり、サイトのURL変数に基づいていないためです。もちろん、Nginxを介してプロキシしようとすると同じことが起こり、../forum/forum.phpURLに「転送」されます。

では、どうすればこれを解決できますか?どういうわけかそのリダイレクトを非表示にし、Nginxが実際にアドレスバーでそれを追跡しないようにする方法はありますか?基本的に、実際のiframeを使用しないiframeです。 :-)

これは私が今試しているNginxコードスニペットです:

    location /foobar {
            proxy_pass      http://internal.com/;
            proxy_redirect  off;
            proxy_set_header        Host $Host;
    }

アイデア?前もって感謝します。

3
Lars

この場合、基本的に2つの異なるオプションがあることがわかりました。

  1. AndreiMikhaltsovが指摘したようにngx.luaモジュールを使用し、返されるHTTP応答のプロキシを変更するか、これはもちろん非常に悪夢かもしれません。

  2. 「転送」先のアプリケーション(この場合はフォーラム)にいくつかの変更を加えます。

私たちの場合、2番目を選択し、基本的に同じドメインに配置して、フォーラムにいくつかの変更を加えました。

1
Lars