私は Passenger 4.0.17 のオープン ソース バージョンを使用しており、その動作について、ドキュメントからは明らかでないことを識別しようとしています。誰かが助けてくれることを願っています。
これを行うことに違いはありますか:
server {
listen 443;
server_name www.example.com;
root /path/to/my/app/public;
location / {
passenger_enabled on;
rails_env production;
# etc. ....
}
}
そして、これを行う?
server {
listen 443;
server_name www.example.com;
root /path/to/my/app/public;
try_files $uri @passenger
location @passenger {
passenger_enabled on;
rails_env production;
# etc. ....
}
}
私は前者をするのが習慣になっていますが、後者の方が良いのではないかと思い始めています.
最初の例では、パッセンジャー ワーカー プロセスがすべてのリクエストを処理し、2 番目の例では、パッセンジャー ワーカー プロセスが Nginx が静的応答を提供できないリクエストのみを処理することを期待します。
しかし...
心の奥底では、Nginx の Passenger モジュールにはそのレベルのインテリジェンスが組み込まれておらず、try_files ディレクティブは不要なのではないかと考えています。(上記の try_files ディレクティブにより、Nginx が独自に処理できるリクエストを Passenger が処理できなかった場合、それは Passenger のドキュメントでカバーされていると思いますが、それについてはまったく言及されていません。)
質問する理由は明らかです...
Passenger ワーカー プロセスの両方を必要とせずに Nginx ワーカー プロセスから静的コンテンツを提供できれば、それらの Passenger プロセス (メモリを消費し、比較すると効率が悪い) は、実際に処理する必要がある要求を自由に処理できるようになります。少数のワーカーだけで、より大きな成果が得られます。
繰り返しますが...ドキュメントがこれをカバーしている場所がまったくわかりません。詳しい方からの情報は大変助かります!