当我在正式的发布环境中,只是简单的用 rails s thin 来开启我的程序,没有 nginx 或者 apache 等前端服务器(还是 rails 会给我一个默认的前端服务器?) 这样做的话,我的程序会有什么问题么?
我看了看网上说法是,apache 之类的算是一个前端服务器,负责接受用户的请求,然后分发给 rails 进程处理 thin 之类的是个后端服务器,就是负责开启 rails 进程来处理了 应该要这么理解么?
@luikore 就是说如果我仅仅只是 thin 的话,那么实际上只有一个后端,就是必须是一个请求处理完毕了才能继续处理下一个 如果我使用了前端服务器的话,那么就可以开启多个后端,同时响应多个用户的请求? 如果只用 thin 的话,是不是当有很多用户同时请求的时候,就会有一些人会超时这样?
还有个安全问题。要监听 80 端口需要 root 权限,如果 rails server 启动后没切换到低权限的用户,万一碰到代码注入什么的,直接都 root 权限了。
@kenshin54 就是说,如果只用了 thin,那么就相当于没有(无法?)利用到 thin 的多线程功能,其实也就相当于一个服务再跑,所有的请求都是同步阻塞的是吧
@kenshin54 我知道 thin 实际上是异步的,就是如果我仅仅只用 rails s thin 命令的话,开起来 thread safe,那么,实际上,所有的请求(用户发给服务器的请求),都是同步阻塞的在处理,是么?
这有一个全面的对于 Rails Server 的介绍:http://stackoverflow.com/questions/4113299/ruby-on-rails-server-options