0

最近、富士通のサーバーを購入しました。その上で Linux Mint ( Cinnamon ) を実行しています。

Node.js を問題なくインストールし、80 以外の任意のポートでサーバー スクリプトを実行できました。最初は EACCES エラーで応答しましたが、node.js をルートとして実行すると、そのエラーはなくなりました。これで、他のポートで実行した場合と同じように出力されますが、ドメインに移動すると機能しません。

var http = require('http');

http.createServer(server).listen(80);

function server(req, res) {
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.end('Hello World\n');


    console.dir(req);
}

次のようにシェルでコマンドラインを実行しました。

/home/xymon/node/node server.js

suログイン後。

私のコードは、私が試したほとんどすべてのポートで動作します。でも 81. 80 ではなく、それは私を壁に押し上げています。

4

2 に答える 2

2

1つのオプションは、sudoとして実行することです。これは、すべてのサイトのコードが昇格されるため、優れたオプションではありません。

別のオプションは、代替ポートでサイトを実行し、nginxまたはhttpproxyの背後に配置することです。

var proxyPort = 80;
var http = require('http');
var httpProxy = require('http-proxy');

var options = {
    router: {
        'localhost': '127.0.0.1:3000',
        'site1.com': '127.0.0.1:3000',
        'site2.com': '127.0.0.1:4000'
    }
};
console.log('Proxy Routing:')
console.log(options);
console.log();

var proxyServer = httpProxy.createServer(options);
proxyServer.listen(proxyPort);
console.log('Proxy listening on port ' + proxyPort);

これには、ポート80で複数のサイトを実行できるという優れた利点もあります。ご覧のとおり、ポート3000でもサイトを利用できるようにしていますが、ローカルでのみ利用できます。

于 2013-03-05T13:08:29.840 に答える
1

なんて冒険だ!

次の手順で問題を解決しました。

  1. ポート 80 ~ 100 を開きます。
  2. ポート 100 でサーバーを実行しています。
  3. ポート 80 を 100 にリダイレクトしています... iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 100
  4. sudo で Node.js を実行します。

助けてくれてありがとう、これは私にとって2日間の走り回っていましたが、私は学んでいます!

完成品: http: //io-chat.com/home

于 2013-03-05T13:42:51.443 に答える