0

Node.JS で HTTP/HTTPS プロキシ サーバーを作成しています。サーバーが HTTP と同じポートで HTTPS トラフィックを処理するようにしたいと考えています。

以下の画像は、なぜ私がこれをしたいのかを説明しています。ユーザーはボックスをチェックするだけです...

プロキシ設定

2 つのサーバーを同じポートでリッスンすることはできないと認識していますが、トラフィックを HTTP または HTTPS トラフィックに転送するメインサーバーをセットアップする方法はありますか?

このようなもの:

http.createServer(myHTTPCallback).listen(3129, '127.0.0.1');
https.createServer(myHTTPSCallback).listen(3130, '127.0.0.1');


//Then a main server that will listen for both kinds of traffic

main.createServer(function(req, res){
    if(/*Traffic is HTTPS*/){
        //Forward to 127.0.0.1:3130
    }
    else{
        //Forward to 127.0.0.1:3129
    }
}).listen(3128, '192.168.0.2');

上記をどのようにコーディングしますか?


EDIT - @Chris Jester-Youngの回答によると

この単純なサーバーを作成しましたが、HTTP 要求の出力しか受け取りません。また、ブレークポイントまたはコンソール ログはトレースしません。

var http = require('http');

http.createServer(function(req, res){
    res.write('<h1>Resquest Received</h1>');
    res.write('<span>Requested URL = ' + req.url + '</span>');

    res.end();
}).listen(3128);
4

1 に答える 1

3

プロキシ サーバーを作成する特定のケースでは、同じポートで HTTP と HTTPS の両方をリッスンする必要はありません。ブラウザは、HTTP リクエストまたは HTTPS リクエストのどちらをプロキシする場合でも、HTTP 経由でプロキシ サーバーに接続します。HTTPS 要求は、CONNECTHTTP メソッドを使用して HTTPS サーバーへの直接接続を開きます。このCONNECT要求は、プロキシ トラフィックの暗号化されていない部分で行われます。


編集:コードは次のようになります。

http.createServer(function (request, response) {
    // Handle normal requests here
}).on('connect', function (request, socket, head) {
    // Handle CONNECT requests here
}).listen(3128);
于 2013-08-20T11:07:23.343 に答える