0

Express を使用して node.js でリバース プロキシを作成しようとしていますが、http 要求に対しては正常に動作します。問題は、https を要求しても応答せず、プロキシが接続を拒否したとブラウザが示すことです。http リクエストの作業コードは次のとおりです。

var   app = express(),
      http=require('http');

app.configure(function(){ /* express stuff to log and use routes and the like */ });

http.createServer(app).listen(8000, function(){
  console.log("Express server listening on port " + 8000);
});

app.all('*', proxy);
var request=require('request');

var proxy=function(req,resp){
    var data={
        url:req.url,
        headers: {
            'Connection': 'keep-alive'
        }
    }
    var proxy=request(req.url);
    proxy.pipe(resp);
}

今、SSLに関しては、私は現在試しています:

var https=require('https'),
    fs=require('fs');

https.createServer({
        key: fs.readFileSync(__dirname+'/ssl/server.key', 'utf8'),
        cert: fs.readFileSync(__dirname+'/ssl/server.crt', 'utf8')
      },app).listen(8001, function(){
  console.log("Express server listening on port " + 8001);
});

50.56.195.215:8000プロキシは、HTTP および50.56.195.215:8001SSLを必要とするあらゆる場所から使用できます。セキュリティはまったくないので、重要なものにはログインしないでください = D

私は自己署名 SSL 証明書を使用していますが、そのようなことをしようとするのはちょっとばかげていると思いますが、アイデアが残っていません :P

4

2 に答える 2

1

HTTPS の場合、HTTP 接続を処理し、宛先サーバーを偽装できる必要があります。これには証明書が必要です。

これを使ってみることができます。 https://github.com/noeltimothy/noelsproxy

証明書とキーを含むディレクトリ「magical」をコピーし、noelsproxy を使用します。システムの信頼できるルート ストアに ca.pem を忘れずに追加してください。

Windows を使用している場合は、次のようにします: certutil -addstore -enterprise -f \"Root\" ./magical/ca.pem

問題がある場合はお知らせください。すぐに修正したいと思います。

于 2016-09-05T11:50:19.177 に答える
1

私の提案は、Nodejitsuの優れた既存のライブラリnode-http-proxyを使用することです。自分で書きたい場合は、少なくともそのソース コードを学術的に研究してください。

上記のアプローチに関するいくつかのメモ:

  • GET 以外の HTTP メソッド (POST、PUT、DELETE など) を処理していません。これらが存在します。プロキシを実際に機能させたい場合は、それらを処理する必要があります。を呼び出すたびrequest(req.url)に、requestデフォルトで GET リクエストが行われます。
于 2012-11-09T15:32:23.587 に答える