0

EC2 にシンプルな Rails アプリをセットアップし、Unicorn で実行しています。ポート 80 で実行されるように設定したいと思います。unicorn_rails コマンドで -p フラグを使用しても機能しませんでした。許可が拒否されたというエラーを受け取りました:

[ec2-user@ip-10-164-110-7 current]$ unicorn_rails -p 80
F, [2013-08-02T04:41:41.441613 #3297] FATAL -- : error adding listener addr=0.0.0.0:80
/home/ec2-user/uc_social_server/shared/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn/socket_helper.rb:147:in `initialize': Permission denied - bind(2) (Errno::EACCES)
    from /home/ec2-user/uc_social_server/shared/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn/socket_helper.rb:147:in `new'
    from /home/ec2-user/uc_social_server/shared/bundle/ruby/1.9.1/gems/unicorn-4.6.3/lib/unicorn/socket_helper.rb:147:in `bind_listen'

オンラインで解決策を探していると、Nginx + Unicorn のセットアップに関する投稿を見つけ続けています。次に、IpTables を使用してポート 8080 のトラフィックをポート 80 にリダイレクトすることについて言及されています。

どのアプローチを取るべきかわかりません。

Nginx は必要ですか?

ec2-user がポート 80 でユニコーン プロセスを実行できるようにする方法はありますか?

IpTables ソリューションは適切なアプローチですか? なんとなくそうではないと思います。

4

1 に答える 1

0

ここで、彼らは明らかにあなたが抱えている問題を解決しましたunicorn -p:

カピストラーノを使用してポート 80 でユニコーンを起動できません

他の 2 つのソリューションも、どちらもうまく機能します。

IPtables を使用すると、着信トラフィックをポート 80 から 8080 でリッスンしているユニコーン ソケットにリダイレクトして戻すことができます。それはTCP層で起こっています。

nginx のアプローチは、透過的なプロキシ設定です。すべての魔法は HTTP レイヤーで発生しているため、リクエストとレスポンスを操作したり、キャッシュを設定したりできるという利点があります。

于 2013-08-02T07:27:42.893 に答える