新手问题 为什么需要同时使用 nginx 和 puma

ThanksSirAlec · 2019年05月07日 · 最后由 pynix 回复于 2019年05月09日 · 2667 次阅读

如题,为什么生产环境需要两个服务器,他们都分别做了什么。

静态内容和动态内容。当然 nginx 也可能只起了反向代理和请求分发的作用。

jetspeed 回复

不是很理解,哪些属于静态内容,哪些属于动态内容

ThanksSirAlec 回复

静态内容就是一些资源文件,比如图片,css, js 等文件,这些东西一般放在 public 目录下,即使开发的时候是放在 assets 目录下,最后部署的时候 rails 还是会把它们处理后放到 public 目录下

对于楼上回答的、楼主可以看看这个两个文件

config/environments/development.rbconfig/environments/prodduction.rb

里面的 这个配置

config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

然后呢,其实 Nginx 还有很多其他的功能。比如转发 WebSocket。比如你有好多的 Puma 实例需要分配权重?

首先要搞清楚 静态内容和动态内容。

nginx 是 web 服务器,比如还有 apache

但是只有 nginx,无法使用 rails 程序,必须有东西来连接 web 服务器和 rails 程序

这个程序就是 puma,也叫 rack 服务器,类似的还有 unicorn 等

只有 puma 好像也可以跑起来,但是它只有十几个线程,同时请求太多就不行了

nginx 的连接数可以有上千个,可以同时处理更多请求

有部分功能是重叠的,但是 nginx 能够提供一些更强大更便利的功能,除了楼上说的一些还有比如 HTTP2,基于路径的转发规则,重定向等等。

web 服务器 和应用服务器。具体区别自行 google

nginx 一般充当路由角色。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号