我已经建立了 Passenger + nginx 设置,并计划为基于机架的框架(例如 camping、sinatra)提供免费的非商业托管(或实际上是动态部署)。
我在使用 Passenger 时遇到了一个“问题”。对于每个应用程序,您需要配置 nginx.conf(与 apache 相同,因此这不是 nginx 问题):
server {
...
passenger_base_uri /app1;
passenger_base_uri /app2;
passenger_base_uri /app3;
}
现在这本质上并不是坏事,因为从理论上讲,我可以允许用户在他的网络空间上只运行一个应用程序,但即使在这种情况下,我也需要在 nginx 上创建一个新的服务器目录,例如(user.domain.com)。
因为这主要用于部署应用程序,所以我所关注的行为更有可能在同一服务器(your app.com/app1 yourapp.com/app2)下自动映射多个应用程序(例如 app1、app2、app3、app4),而不必每次都更新 nginx 或 apache 文件。
这似乎是 Passenger 的一个限制。因此,我正在考虑使用 lighttpd 和 fastcgi 进行替代。
这是否允许立即部署而无需触及 lighttpd 配置文件,例如我使用 app2 创建一个新目录,它将立即运行?您对 Passenger + nginx 与 lighttpd + fastcgi 之间的性能差异有何经验?提前致谢
场景详情:在 nginx + Passenger 上 - 用户无法添加新的子文件夹并运行另一个 sinatra/camping 应用程序,除非在 nginx.conf 上声明路径并重新启动服务器;
希望新设置的行为: - 用户可以添加一个带有新应用程序的新文件夹,它将在 lighttpd+fcgi 上运行,而无需对 Web 服务器进行任何额外的配置;
答案1
我会选择第三个选项——使用 fastcgi 的 nginx。使用包含所有要路由到每个应用程序的子路径的目录配置 nginx vhost 并自动创建 Rack 进程(在守护进程工具)(以及需要完成的其余工作)是一个相当简单的编程问题。