3

nodejsでスモールフォワードプロキシを作成し、appfogでホストしました。ブラウザのプロキシを設定した後、ローカルで動作していますが、appfogでホストされているものを使用しようとすると、次のように表示されます。* Errore 130(net :: ERR_PROXY_CONNECTION_FAILED):Connessione al server proxy non riuscita。*これは私のコードです:

var http = require('http');
http.createServer(function(request, response) {
http.get(request.url, function(res) {
  console.log("Got response: " + res.statusCode);
    res.on('data', function(d) {
      response.write(d);
  });
   res.on('end', function() {
     response.end();
    });
}).on('error', function(e) {
  console.log("Got error: " + e.message);
});
}).listen(8080);

私は何かが足りないのですか?

あなたのコードは機能していますが、私がこのようにそれを使用しようとしたら:

var port = process.env.VCAP_APP_PORT || 8080;
var http = require('http');
var urldec = require('url');
http.createServer(function(request, response) {
var gotourl=urldec.parse(request.url);
var hosturl=gotourl.host;
var pathurl=gotourl.path;
var options = {
    host: hosturl,
    port: 80,
    path: pathurl,
    method: request.method
  };

  http.get(options, function(res) {
    console.log("Got response: " + res.statusCode);
    res.on('data', function(d) {
      response.write(d);
    });
    res.on('end', function() {
      response.end();
    });
  }).on('error', function(e) {
    console.log("Got error: " + e.message);
    response.write("error");
    response.end();
  });
}).listen(port);
console.log(port);

それでも機能しません:アドレスにpingを実行しようとするとリクエストがタイムアウトになり、同じERR_PROXY_CONNECTION_FAILED ...がローカルで機能しますが、リモートアドレスをプロキシとして使用すると機能しません

4

1 に答える 1

2

最初:アプリは、cloudfoundry によって発行されたポート番号を使用する必要があります。アプリは、ポート 80 で着信要求を受け取って VCAP_APP_PORT に転送するリバース プロキシの背後に配置されます。

var port = process.env.VCAP_APP_PORT || 8080; // 8080 only works on localhost

....

}).listen(port);

次に、ホストされたアプリに次のようにアクセスします。

http://<app_name>.<infra>.af.cm  // port 80

そしてあなたのローカルアプリ:

http://localhost:8080

2 番目:オプション ハッシュを使用して、単に request.url を提供する代わりに、http.get メソッドに送信する必要がある場合があります。

var options = {
  host: '<host part of url without the protocal prefix>',
  path: '<path part of url>'
  port: 80, 
  method: 'GET' }

ローカル ボックスと AppFog で次のコードをテストしましたが、IP が異なっていました。Whatismyip は、ローカルで実行しているときにローカルのインターネット IP アドレスを返し、AppFog でホストされたアプリでは AppFog サーバーの IP を返しました。

var port = process.env.VCAP_APP_PORT || 8080;
var http = require('http');
var options = {
    host: "www.whatismyip.com",
    port: 80,
    path: '/',
    method: 'GET'
  };
http.createServer(function(request, response) {
  http.get(options, function(res) {
    console.log("Got response: " + res.statusCode);
    res.on('data', function(d) {
      response.write(d);
    });
    res.on('end', function() {
      response.end();
    });
  }).on('error', function(e) {
    console.log("Got error: " + e.message);
    response.write("error");
    response.end();
  });
}).listen(port);
于 2012-11-22T17:40:53.427 に答える