5

更新:唯一の問題は、8000ではなく一部のポートをブロックするファイアウォールの背後にいることでした。


編集:TL; DR:ポート9000にリモートで接続することはできませんが、ポート8000​​は問題なく、理由はわかりません:(


このnode.jsアプリケーションはポート8000​​で実行されており、別のアプリケーション(http-proxy)はポート9000で実行されています。

自分のマシンで実行することは問題ありませんが、サーバーに配置すると問題が発生します(EC2インスタンス-Webコンソールセキュリティグループ[1]のポートを開きました)。アプリケーションは正常に動作しますが、外部からプロキシに接続できません。サーバーで試してみたところ$ telnet localhost 9000、接続されているので、それは良い兆候だと思います。

私が気付いたもう1つのことは、アプリケーションを個別に実行しようとすると、同じ結果が得られることです。つまり、8000-OK、9000-NOTOK:<です。ただし、プロキシが使用するポートを9000から8000に変更すると、機能します。また、ポート、つまりapplication:9000とproxy:8000を切り替えると、プロキシに接続できますが、アプリケーションには接続できません。他の番号も試しましたが、それでも直りません。

アプリケーション自体とは関係がなく、私が行方不明になっている本当に愚かなことがあると思いますが、私はそれに指を置くことができないので、このセットアップが機能しない理由を誰かが知っていますか?

server.js

var express = require('express.io');
var app = module.exports = express();

require('./proxy');

app.http().io();
app.listen(8000);
// ...

proxy.js

var httpProxy = require('http-proxy');
var url = require('url');

httpProxy.createServer(function(req, res, proxy) {

    // ... 
    proxy.proxyRequest(req, res, {
        host: destination.host,
        port: 80
    });

}).listen(9000);

$ netstat -pln | grep node出力

tcp   0      0      0.0.0.0:9000    0.0.0.0:*       LISTEN  1487/node
tcp   0      0      0.0.0.0:8000    0.0.0.0:*       LISTEN  1487/node

セキュリティグループのルール

1

4

1 に答える 1

3

問題は、アプリケーションやEC2インスタンスのセットアップにまったく関係していないことが判明しました。

これをテストしているときに私がいたネットワークは、いくつかのポートをブロックしていました。これが、プロキシをポートに移動するときに正常に機能していた理由ですが80009000私が試した他のランダムなプロキシでは機能しませんでした。D'oh!

于 2013-04-19T08:37:33.203 に答える