Nodeで80番ポートをlistenするサーバの構築方法


こんにちは、@9ensanです。

node

NodeでWebサーバを構築する時にhttpモジュールからhttp.Serverクラスのインスタンスを生成してlistenで指定ポートを待ち受けます。

そこで、以下のようにlistenポート番号に80を指定して実行すると、

以下のようにエラーが発生し実行できません。
node-listen-80-server-01

これを対応する方法について解説します。

このエラーが発生する理由は、wikipediaの「ポート番号」の説明で、以下のように解説されている事が原因です。

UNIX系のOSでは、0~1023番のポートを使用するには、通常、root権限が必要で、予約ポートとも呼ばれる。

ようするに、root権限を持つユーザーで実行しないといけないという事になります。
ですが、root権限を保持するユーザーで実行することは、セキリティ上危険が高くなります。
で、どうするかというと、root権限で実行した後に、プロセスのオーナーを変更する事で対処します。

実際のコードが以下になります。

これで、実行したserverのプロセスを、rootからuidが80のユーザーに切り替えます。
80番でlistenするので、実行はrootで行う必要があります。

ですが、無理に80番で実行しなくてもnginxやapacheなどでリバースプロキシをたてる方が普通なんだと思います。

.

関連する記事:

Facebookでコメント

コメント

  1. コメント 0

  1. トラックバック 0

*

return top