問題タブ [node-http-proxy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node-http-proxy - ノード http-proxy プロキシ URL を検索
使用時にプロキシ サーバーから 404 が返される理由をデバッグしようとしていますhttp-proxy
。プロキシされた URL を確認する方法はありますか?
これは私の現在の設定です:
node.js - node-http-proxy を介した WebSocket のプロキシが機能しない
これらは、私が使用しているノードと必要なモジュールのバージョンです:
- Node.js: 0.10.16
- Websocket ライブラリ: einaros/ws ws@0.4.28
- プロキシサーバー: nodejitsu/node-http-proxy http-proxy@0.10.3
次のプログラムを実行すると、コンソール出力は次のようになり、このポイントを超えません。
コードは次のとおりです。
私の問題は、最終的に Hipache を使用しようとしたときに始まりました。次に、node-http-proxy に単純化し、最後にこのコードに単純化しました。
WebSocket クライアントが接続しているポートを 9090 から 19000 に変更すると (プロキシをバイパスして)、正常に動作するように見えます。
提案、指針、フィードバックをいただければ幸いです。
ありがとう!
node.js - Node クラスターで複数の Node アプリを実行する
複数の Node/Express アプリを一連のサーバー (ロード バランサーの背後) にデプロイする必要があります。これらのアプリは、機能面で互いに完全に独立しています。最初に、これをどのように行うことを考えているかを説明し、次に、設計に危険信号がある場合など、ベスト プラクティスに関する意見を求めます。
私が考えている設定は次のとおりです。
ロード バランサーの背後にあるフロントエンド サーバーでは、node-http-proxy が実行され、ポート 80 で着信要求を受け入れます。このリバース プロキシは、このサーバーの異なるポートで実行されている適切なノード アプリに要求をルーティングします。例:
各ノード アプリは、Cluster2 などを使用してノード クラスター上で実行され、マルチコア システムを利用します。
私の質問:
- これは正しい設計と戦略ですか?
- 一部のアプリケーションはステートフルにする必要があります。この種のセットアップで状態管理を行う最良の方法は何ですか? Redis などの外部セッション ストレージを使用することは正しいアプローチですか? または、特定のフロントエンド マシンにセッションを固定し、インメモリ セッション ストレージを使用しますか?
アップデート:
この質問を投稿してから、何人かと話した後、もう 1 つのアプローチが思い浮かびました。
フロントエンド マシンの前で Nginx をリバース プロキシおよびロード バランサーとして使用できます。各フロントエンド マシンは 1 つのアプリのみを提供します。そのアプリ用にもう 1 台のバックアップ マシンが存在する可能性があります。(要件に応じて)。したがって、3 つのアプリがある場合は、それぞれが異なるアプリを提供する 3 つの別個のマシンを用意します。すべてのリクエストはポート 80 で Nginx によって受信され、Nginx リバース プロキシはリクエストを適切なフロントエンド マシンにルーティングします。各マシンには、マルチコア システムを利用するためのノード クラスターがあります。このアプローチの利点は、各アプリの展開が非常に簡単になることです。また、各アプリを個別にスケーリングできます。
このアプローチについても、ご意見をお聞かせください。
node.js - リバース プロキシを使用している場合、socket.io の例がクライアント側に接続しないことがある
node-http-proxy を使用して、ルーティング リクエスト用のリバース プロキシをセットアップしました。
ここで、 http://socket.io/#how-to-useで最初の例を実行すると、ソケットがクライアントに接続しないことがあります。これをテストするために、server.js と index.html という 2 つのファイルを作成しました。node アプリケーションを開始するには、server.js を実行します。
サーバー.js:
index.html:
クライアントが接続しない場合、ソケットがサーバーに接続した後、次の出力が +/- 10 秒間隔で繰り返し表示されます。
ここで、ブラウザーを数回更新すると、ソケットは常にサーバーに接続します (つまり、常に"Socket connected"をログに記録します) が、クライアント側に接続しない場合があります。インデックスを更新した後、"false"console.log(socket.socket.connected)
を繰り返し出力することがあります。 html であり、別のページの更新後、ソケットがクライアントに接続しなかった、または接続した場合、「true」または「false」を繰り返し出力することがあります。
この例は、リバース プロキシを使用しない場合でもクライアント側で機能するため、www.example.com のポート 80 で server.js を実行すると、. 誰かがこの問題の原因を指摘できれば素晴らしいと思います。node.js v0.8.23、socket.io バージョン 0.9.14、node-http-proxy バージョン 0.10.1 を使用しています。
アップデート
おそらく、私は実際にノード v0.10.21 を使用しています。nvm を使用してノードのバージョンを切り替えてv0.8.23を使用していると思っていましたが、何らかの理由で v0.10 に戻ってしまいます。http-proxy がノード バージョン 0.8 以降の Web ソケットをサポートしていないことは既知の問題であるため、それが原因である可能性があります。もっと良いものが見つかるまで、robertklepのソリューションを使用しています。
node.js - Node - Express アプリケーションからの認証とクロスドメイン エラー
ノード上で実行されている ember.js を使用してアプリケーションを開発しています。
ここで、いくつかの外部 Web サービスを呼び出し、それに応じて (Web サービスの応答に基づいて) ホームページを作成する必要があります。
- これらの Web サービスは、外部サーバー (別のドメイン) で実行されています。現在、ローカル環境から Web サイトを実行しています。
- 認証:有効な資格情報を提供した後でのみ、ユーザーはこれらの Web サービスにアクセスできます。つまり、ブラウザからこの Web サービスにアクセスしようとすると、最初にユーザー名とパスワードの入力を求められます。これらの資格情報が有効な場合 (サーバー側の検証)、応答 json が返されます。
私のapp.jsコードは次のとおりです。
ホームページのコード (簡単にするために、すべてのビューを削除し、ページの読み込み時に外部 Web サービスを呼び出すだけです)
上記のように、ブラウザーから (資格情報の検証後) 以下の Web サービス ( http://vpn.domain_name.com/myServer/WebService/json/getInfo ) に正常にアクセスできました。
ただし、コードからアクセスしようとすると、次のエラーが表示されます: Firebug によるデバッグ時:
Google Chromeコンソールを介したデバッグ時:
上記のエラーがクロス ドメイン アクセスによるものなのか、http 基本認証エラーによるものなのかはわかりません。
CORS を許可する方法で提案されているソリューションを試してみました。およびhttp://nthloop.com/blog/local-dev-with-nodejs-proxy/
ただし、コードから適切な応答を取得できませんでした。誰でもこれについて私を案内してもらえますか。
ありがとうございました。
javascript - node.js http-proxy を使用したトラフィックの測定
http および node-http-proxy モジュールを使用して、同じコンピューター上でアプリケーションをホストするための小さなリバース プロキシを作成しました。例えば:
私は持っている:
ポート 80 で実行されているプロキシ
ポート 3000 で実行されているwebsite1.com
ポート 3001 で実行されているwebsite2.com
ポート 3002 で実行されているwebsite3.com
website1.comドメインにアクセスすると、プロキシはnode-http-proxyを使用してポート 3000 で実行されているサーバーからコンテンツを提供します。
しかし今、各ドメイン (着信/発信の両方、または少なくとも発信) で使用される帯域幅を測定する必要があります。
リクエストオブジェクトで「データ」イベントをリッスンしようとしましたが、ドキュメントでは、何らかの理由で読み取り可能なイベントがIncomignMessageで発行されないと述べています。
「基本」機能用の小さなモジュールも作成しました。ここにあります。
https://npmjs.org/package/reproxy
example/example.jsを参照
では、現在のセットアップを使用して、この対策をどのように達成できますか?
node.js - プロキシの背後で実行されている Web サイトから Web サービスにアクセスする
ember と Express over node を使用して Web サイトを設計しています。たとえば、サーバーで実行されています:SERVER_1。
SERVER_2など、別のサーバーで実行されているWebサービスはほとんどありません。
あれは:
SERVER_1 の Web サイトと SERVER_2 で利用可能な Web サービス
SERVER_1 はプロキシ サーバーの背後にあります。そして、SERVER_1 から Web サービスにアクセスしようとしています。
SERVER_1 から AJAX Web サービス呼び出しを行うと、次のメッセージが表示されます。
ただし、ブラウザから値を正常に取得できます。AJAX コードを介してのみ、Network 500 errorを取得しています。
また、テストのために、プロキシ サーバーのセットアップを削除しました。
そして、AJAX コードとブラウザーの両方を介して、これらすべての Web サービスに正常にアクセスできました。
それらの間にプロキシサーバーがある場合:
私は取得しています -- NetworkError: 500 Internal Server Error
プロキシ サーバーの背後で実行されている Web サイトからサードパーティの Web サービスにアクセスする手順を知りたいですか?
追加情報:
クロスドメイン Web サービス アクセスの問題 (あるサーバーで実行されている Web サイトと、異なるポートを持つ別のサーバーで実行されている Web サービス) を既に修正するために、http-proxy npm を使用しています。私のコードは次のとおりです。
私のAJAX呼び出し:
すでに http-proxy を使用してすべての URL のリクエストを処理しています。
これらすべての Web サービスに正常にアクセスできるように、上記のコードでプロキシ サーバーの IP アドレスとポートを構成するにはどうすればよいですか? または、AJAX 呼び出しでプロキシ構成を行う方法はありますか?
誰でも私を案内してもらえますか?
ありがとうございました