1

で作成したノードアプリを実行していますcreate-react-app。ポートで実行したかったので、内容のファイル80を追加しました.env

PORT=80

私が実行するnpm startと、私は得る

? Admin permissions are required to run a server on a port below 1024.

しかし、実行するsudo npm startと、アプリはポートで起動します3000

.envで実行するとファイルが無視されるのはなぜsudoですか? どうすれば修正できますか?

編集:この質問は、実行時に現在の環境変数を保持する方法に関するものではありませんsudo。この質問は、 の動作と.env、 で実行すると動作しない理由に関するものsudoです。

興味深いことに、su を使用すると、たとえば、.

$ su
# npm start

ポート 80 で実行されます。

80完全に明確にするために、コマンドでポートを渡さずにポートでアプリを実行する方法を知りたいですsudo PORT=80 npm start。これが の要点だと思います.env。したがって、質問です。

4

1 に答える 1

0

ルート権限なしでポート 80 でサーバーを実行することはできないと思いますが、ポート 80 から他のポートに接続をリダイレクトすることはできると思います。

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
于 2019-04-17T19:46:32.363 に答える