27

ポート 80 に nodejs を配置する必要がありますが、Apache は既にそれを使用しています。両方 (nodejs と apache) を同じポート 80 に配置するにはどうすればよいですか? 私の大学では、ポート 80 を除くすべてのポートがブロックされているため、これが必要です (これは、nodejs と socket.io (websockets) を使用したリアルタイム アプリケーションであり、反対側には php アプリケーションです)。どうもありがとう

4

6 に答える 6

23

私はnode.jsプロキシ経由でこれを行います..

または公式ページhttp-proxyでインストールnpm

例:

var http = require('http'),
httpProxy = require('http-proxy'),
proxyServer = httpProxy.createServer ({
    hostnameOnly: true,
    router: {
        'domain.com':       '127.0.0.1:81',
        'domain.co.uk':     '127.0.0.1:82',
        '127.0.0.1':        '127.0.0.1:83'
    }
});

proxyServer.listen(80);

これにより、ポート 80 をリッスンするノード プロセスが作成され、81、82、83 などに送信されるドメインのリクエストが転送されます。システムがシャットダウンした場合にプロキシが起動するように、これを実行foreverしてエントリを追加することをお勧めします。init.d

于 2012-06-24T00:15:37.323 に答える
9

私は個人的に@liammclennanとは逆にこれを行いました。Apache を介したプロキシは、Node のパフォーマンスとスケーラビリティの利点の一部を無効にすることを示唆する人もいます (私のサーバーはそれほど多くのトラフィックを取得しないため、経験はありませんが、@liammclennan のリンクから: 「Apache を介して着信するすべての要求は、 Node.js プロセスから応答が返されるまで待機/ブロックする Apache スレッドです。"、これは明らかに Node のアーキテクチャとうまく噛み合いません。)

node-http-proxyを使用して、最初のリンクで説明したように大まかにノード プロキシ サーバーをセットアップしました (私のノード プロキシはポート 80 で実行されますが、Apache と他のノード サービスは実行されません)。これまでのところうまくいっているようですが、プロキシがまだcronジョブで実行されていることを確認することで「解決」した安定性の問題が時々ありました(編集:最近はずっと安定しているようです)。プロキシは非常に軽量で、約 30MB のメモリを占有します。

于 2012-06-23T22:41:55.103 に答える
0

できません。node.js を別のポートで実行してから、apache 経由でリクエストをプロキシする必要があります。mod_proxy を使用してこれを行うことができます

http://davybrion.com/blog/2012/01/hosting-a-node-js-site-through-apache/

于 2012-06-23T22:26:40.200 に答える
0

私は通常、そのような状況でフロントエンドとしてhaproxyを使用し、適切なバックエンドサーバーへのプロキシを持っています. (ただし、node.js プロセスをプロキシ サーバーにすることも、ニーズによっては有効なアプローチです)。

于 2012-06-24T04:07:11.853 に答える
-2

ポート 80 で apache と nodejs を実行するクールな要点を見つけました。まだ試していませんが、もちろん試します

ステップ1

2つ以上の IP アドレスを提供する VPS を取得します。

ステップ2

WHM cPanel から、メニュー項目を見つけてService Configuration選択Apache Configurationし、 をクリックしReserved IPs Editorます。

ステップ 3

Apache にリッスンさせたくないIP アドレスにチェックマークを付け、次のステップで使用できるように書き留めます。をクリックしSaveます。

ステップ 4

Node.js をインストールし、次のようなサーバーを作成します。

var http = require('http');

var server = http.createServer(function(req, res) {
  res.writeHead(200);
  res.end('Hello, world!');
});

server.listen(80, '111.111.111.111');

111.111.111.111以前に WHM cPanel から予約した IP アドレスに置き換えます。

ステップ 5

mod_rewrite時間を無駄にするのはやめて、 Node.js を再びプロキシするために使用するように言う人々の言うことを決して聞かないでください 。

アップデート:

私たちはさまざまな方法で問題を解決できますが、私見ですが、少なくとも可能な方法をそれぞれ知っておく必要があります。もちろん、新しい IP を購入せずに、80 以外のポートをそれぞれ実行する Apache と NodeJS サーバーの両方の前にプロキシを配置することで、それを行うことができます。

于 2014-02-11T04:32:18.197 に答える