我正在使用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. ....
}
}
我一直习惯做第一个,但我开始怀疑第二个是否更好。
我希望在第一个示例中,Passenger 工作进程处理每个请求,而在第二个示例中,Passenger 工作进程仅处理 Nginx 无法为其提供静态响应的那些请求。
但...
在我的脑海里,我想知道 Nginx 的Passenger 模块是否还没有内置那种级别的智能——这使得try_files 指令变得不必要。(如果上面使用的 try_files 指令阻止Passenger 处理Nginx 可以自己处理的请求,我希望这已经包含在Passenger 文档中,对吧?但根本没有提到它。)
问的原因很明显...
如果我可以从 Nginx 工作进程中提供静态内容,而不必同时使用两个Passenger 工作进程,那么那些Passenger 进程(它们占用更多内存并且相比之下效率较低)将可以自由处理他们真正需要处理的请求,我'只需少量工人,我的钱就会物有所值。
再一次......我根本看不到文档在哪里涵盖了这一点。任何知情人士的信息将不胜感激!