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

ThanksSirAlec · May 07, 2019 · Last by pynix replied at May 09, 2019 · 2664 hits

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

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

Reply to jetspeed

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

静态内容就是一些资源文件,比如图片,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 一般充当路由角色。。

You need to Sign in before reply, if you don't have an account, please Sign up first.