Puma有类似Apache" Location"标签?

时间:2018-01-04 19:21:10

标签: ruby-on-rails ruby puma

我使用Puma(版本3.11.0)作为Rails应用程序(Rails版本5.1.4)的Web服务器。我需要整个应用程序进行SSL加密,但我需要一个特定的路由来获得SSL" verify_mode"设置为同行。在Apache中,我通常会使用" Location"或者" LocationMatch"阻止配置SSL选项与站点的其余部分不同。

我怎样才能和Puma做同样的事情?

2 个答案:

答案 0 :(得分:2)

我完全同意@ user3309314。

直接将Puma暴露于互联网(或暴露任何应用服务器),这不是一个好主意。

Web服务器(与应用程序服务器不同)设计在前端,保护应用程序服务器免受残酷世界的侵害......

......在此过程中,他们应该是处理SSL / TLS的人(以及DoS攻击和其他恼人的问题)。

因此,使用nginx或apache将请求转发到您的Ruby应用程序,如果您需要特定路径的特殊TLS / SSL规则,请使用nginx或apache执行此操作。

Puma没有(并且恕我直言不应该)支持您所询问的功能。

编辑(评论中给出的一些信息+解释)

最好将应用程序服务器视为主机路由层(nginx / apache)与应用程序之间的“桥梁”。

主机路由层(nginx / apache)过滤并路由某些主机名和路径到某些应用程序(或具有不同标头/变量/要求的相同应用程序)。

应用程序服务器的工作是简单地在主机路由层和实际应用程序之间“桥接”,在不同的数据格式(HTTP数据到Ruby对象和后面)之间进行转换。

为了支持您所询问的功能,应用程序服务器应该执行与主机路由层相同的功能(使用正确的更改将正确的主机名/路径路由到正确的应用程序)

这会违反任何“关注点分离”以及为系统增加冗余,从而造成性能损失(更不用说在不同模块中复制相同任务的更大代码库)。

这就是为什么,恕我直言,这些功能应该编码到Ruby应用服务器中。

答案 1 :(得分:1)

彪马不太可能支持这一点。

但您可以将Nginx或Apache配置为反向代理,因此请求会转发到Puma应用程序服务器,您可以根据需要配置SSL选项。