2016-07-21 2 views
3

私はNVMを使用してSails Webアプリケーションを開発しています。私はNVMを通してノードv0.12.7をインストールしました。私はこのバージョンを使ってウェブサイトを稼働させています。実稼働環境でNVMをどう扱うのですか?

nvm use 0.12.7 
sails lift 

セールはデフォルトでポート1337を使用しますが、本番環境のために、私たちはこの問題は、このポートは、root権限が必要なことである443に変更し、そしてNVMはただ一人のユーザ用にインストールされています。だから私がsudo帆を持ち上げようとすると、セイルがインストールされていないというエラーが出る

この問題を解決する最も効果的な方法は何ですか? NVMを使用してプロジェクトを開発し、それを展開するにはどうすればよいですか?

私はさまざまな解決策を考えましたが、それが良いか不安かどうかはわかりません。

  1. iptablesを使用する転送ポート。その問題は、ソケットがプロキシとして動作できないことです。
  2. ポートのアクセス権を変更します。ノードに脆弱性があると、セキュリティリスクになる可能性があります。
  3. NVMをrootでインストールします。問題は、NVMを使用してアプリケーションのデプロイまたは実行にsudoの使用を避けていることです。これにより、強制的に実行されます。

このコンテキストでのベストプラクティスは何ですか?

ありがとうございます。

+1

なぜソリューション1が動作しないのでしょうか?ポート転送はプロキシではありません。とにかく、私の好みの解決策は、常にnginxやapache2のようなバトルテスト済みのフロントエンドサーバーを用意し、それを使ってWebアプリケーションのプロキシをリバースすることです。他にも利点がありますが、私の主な理由はセキュリティだということです。ハックするレイヤーがもう1つ追加されます。 – slebetman

+0

同意 - nginx経由のリバースプロキシは、このシナリオではソケットを含めて完全に動作します。私はオプション2と3を全く使わないと考えています。オプション1または私たちの新しいオプション4 = nginx/apache/lighttpdなど あなたが何か問題に遭遇し、そのルートを下ることに決めたら、nginxの設定を分かち合いましょう。 – munkee

+0

WebSocket(socket.ioなど)を参照している場合、リバースプロキシはややこしいですが、実行可能です(これまでにやったことがあります)。ちょうどあなたの選択のサーバーのwebsocketプロキシのためのGoogle。プロダクションサーバーでより新しいバージョンのサーバーを使用する必要があるかもしれませんが。 – slebetman

答えて

0

以下の問題を解決しました。

ノードの所有者とグループを変更しました。

which node # gives a string with the path to node 
sudo chown root:root path_to_node 
sudo chmod u+s path_to_node 

このように、ノードを実行しているすべてのユーザーが所有者権限でそれを行います。この場合、所有者はルートであり、その特権は1024未満のポートを使用するのに十分です。

このソリューションについてどう思いますか?

0

セキュリティ上の理由から、NodeJSをroot特権で実行することはお勧めしません。

root権限を持たない別のユーザーがアクセスできるポートでアプリケーションを実行し、443ポートからリバースプロキシを設定することができます。これは、リバースプロキシとしてnginxを使用したもので、このタスクを実行してSSLトラフィックを処理するように簡単に設定できます。

あなたがリバースプロキシとしてnginxの設定に関する詳細な情報を見つけることができますこのリンクを

、それは公式ドキュメントからです: https://www.nginx.com/resources/admin-guide/reverse-proxy/

関連する問題