0

私の場合、Apacheサーバーポート3000でホストされているangularjs/nodeアプリである、ホストされたjavascriptアプリを介してHTTPリクエストを作成するための、適度に詳細なプロキシサーバーフローを誰でも提供できますか。私は外部サービスを呼び出しており、許可されていないレンガの壁を超えています。Apache で mod_proxy を使用することを推奨する例をたくさん見てきましたが、それらはすべて詳細に欠けており、事前に基本的なプロキシ構成の知識があることを前提としています。私の推測では、これは克服すべき一般的な問題ですが、最初は少し手がかかる必要があります。私の主な質問は次のとおりです。

  1. 1 つのサーバーで 1 つの IP アドレスを使用してこれを実現できますか? または、1 つのサーバーでホストし、もう 1 つのサーバーで mod_proxy を使用できますか?

  2. 1つのサーバーでこれを行うことができれば。もしそうなら、一般的なセットアップ (A から B) は何ですか? 1 つまたは 2 つの仮想ホスト?

  3. ProxyPass および ProxyReversePass ディレクティブについて説明します。外部サービスの URL をここに追加する必要がありますか?

  4. 私は一方通行の道を完全に間違った方向に進んでいますか?

4

1 に答える 1

1

試行錯誤の末、思いつきました。これが私が持っているものです...

  1. 1 つのサーバーで 1 つの IP アドレスを使用してこれを実現できますか? または、1 つのサーバーでホストし、もう 1 つのサーバーで mod_proxy を使用できますか?
    A: 1 つの IP アドレスを持つ ON サーバーは問題なく動作します。すべてのプロキシ機能は、私の場合は :9000 のポートを介して処理されます。ポート番号の選択は本当にあなた次第です。9000 は単に高い数値であり、他のノード機能と競合しませんでした。また、私が知る限り、それは書かれていない標準のようです。

  2. 1つのサーバーでこれを行うことができれば。もしそうなら、一般的なセットアップ (A から B) は何ですか? 1 つまたは 2 つの仮想ホスト?
    A:これはおそらく、私の Apache 仮想ホストのセットアップを見ることで最もよく説明できます...

    私は SSL を使用しているため、ポート :80 のすべての HTTP リクエストは HTTPS に書き換えられます。

    仮想ホスト *:80
      RewriteEngine オン
      RewriteCond %{HTTPS} オフ
      RewriteRule (.*) http(s)://%{HTTP_HOST}%{REQUEST_URI}
    /仮想ホスト



ポート :3000 でノード アプリを実行しているため、すべてのトラフィックは標準の :443 からポート :3000 に、またはその逆にルーティングされます。基本的にポート :3000 は、パブリックに関する限り、サーバー プロキシを介してプライマリ ドメイン名になります。

    仮想ホスト *:443
      RewriteEngine オン
      ProxyRequests オフ
      SSLエンジンオン
      オンの SSLProxyEngine

      SSLCertificateFile /pathToCert/sslCert.crt
      SSLCertificateKeyFile /pathToKey/sslKey.key

      位置 /
          ProxyPass http://localhost:3000/
          ProxyPassReverse http://localhost:3000/
      /位置

    /仮想ホスト



Cross Domain HTTP POST リクエストのリバース プロキシとしてポート :9000 を割り当てました。ProxyPass および ProxyPassReverse ディレクティブは、基本的に、自分のドメインのアドレスで作成した HTTP 要求の URL を書き換えます。

https://MySite.com:9000/?request¶ms&here

となります

https://SomeOtherSiteThanMine.com/?request¶ms&here


このようにして、自分のドメインに対してリクエストを行っているとブラウザに思わせます。また、リクエスト CORS がプロキシと互換性を持つようにする「ヘッダー セット」行にも注意してください。

    仮想ホスト *:9000
      RewriteEngine オン
      ProxyRequests オフ

      SSLエンジンオン
      オンの SSLProxyEngine

      SSLCertificateFile /pathToCert/sslCert.crt
      SSLCertificateKeyFile /pathToKey/sslKey.key

      ProxyPass / https://SomeOtherSiteThanMine.com/
      ProxyPassReverse / https://SomeOtherSiteThanMine.com/

      ヘッダー セット Access-Control-Allow-Origin "*"
      ヘッダー セット Access-Control-Allow-Methods "POST"
    /仮想ホスト




3. ProxyPass および ProxyReversePass ディレクティブについて説明します。外部サービスの URL をここに追加する必要がありますか?
A:上記


4 を参照してください。一方通行の道を完全に間違った方向に行っているだけですか?
A:いいえ、完全にうまくいきました。


誰かがこの方法に問題を見つけたら、ぜひ声をかけてください。漠然と説明されたいくつかの例をつなぎ合わせただけです。

于 2013-08-30T18:35:18.363 に答える