Rails 3.2 アプリを提供するために Nginx と Thin を使用することについて、多少混乱しています。以前は、Thin が Windows Server 2008 R2 で Rails アプリを問題なく提供していました。次のように、ポート 80 でサーバーの IP アドレスを指定して、運用サーバーで Thin を起動します。
rails server thin -b 10.xx.x.xxx -p 80 -e production
現在、Nginx をミックスに追加しようとしていますが、Thin を開始する方法と、Thin に転送するように Nginx を構成する方法について混乱しています。
たとえば、Nginx がポート 80 でリッスンしているため、別のポートでローカルに Thin を起動する必要がありますか? 0.0.0.0:3000 (または 127.0.0.1:3000) のように? それとも以前のように 10.xx.x.xxx:80 で Thin を起動しますか?
Nginx conf ファイルで、アップストリーム サーバーをローカルホストとして指定するか、またはマシンの IP アドレスを指定しますか? 何のためにあるのかよくわかりません。
upstream mywebapp_thin {
server 0.0.0.0:3000;
}
server {
listen 80;
server_name mywebserver www.mywebserver;
# locations et. al. excluded for brevity...
私が目にするほとんどの例では、アップストリーム サーバーがポート 3000 または 5000 で実行されています。これらの例は、実際には開発セットアップ用であり、運用用ではないのでしょうか? それとも、Nginx が現在リッスンしているため、80 以外の別のポートで Thin を実行する必要がありますか?
Thin が実行されているポート (mywebserver:3000/projects) を追加しない限り、Web アプリが基本 URL (mywebserver/projects) に応答しないことに気付きました。