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

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

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

共收到 12 条回复

静态内容和动态内容。当然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一般充当路由角色。。

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