Ruby on rails 使用HTTP和HTTPS的瘦Web服务器

Ruby on rails 使用HTTP和HTTPS的瘦Web服务器,ruby-on-rails,ruby-on-rails-3,ssl,https,Ruby On Rails,Ruby On Rails 3,Ssl,Https,我正在使用瘦web服务器为我的Rails应用程序提供服务 使用thin start启动服务器可提供http请求 使用thin start--ssl启动服务器提供https请求 有没有办法让thin同时为http和https请求提供服务? 我问这个问题的原因是,当我在控制器中使用redirect\u到某个路径时,它们会重定向到http。由于thin正在为https请求提供服务,因此不会呈现任何内容 注意:我在Rails 3.0.7中使用了Rack::SSL(根据要求将注释转换为答案) 最简单的

我正在使用瘦web服务器为我的Rails应用程序提供服务

  • 使用
    thin start
    启动服务器可提供
    http
    请求
  • 使用
    thin start--ssl
    启动服务器提供
    https
    请求
有没有办法让
thin
同时为
http
https
请求提供服务?

我问这个问题的原因是,当我在控制器中使用
redirect\u到某个路径时,它们会重定向到
http
。由于
thin
正在为
https
请求提供服务,因此不会呈现任何内容

注意:我在
Rails 3.0.7
中使用了
Rack::SSL
(根据要求将注释转换为答案)


最简单的选择可能是运行两个独立的瘦实例:一个接受SSL请求,另一个接受明文请求。你为什么不想这样做?(或者,如果thin在另一个web服务器(如Apache或Nginx)后面运行,您只需要一个thin实例:前端服务器可以报告请求是否通过SSL传入。)


不能在同一端口上同时接受HTTP和HTTPS连接。(这就是为什么默认情况下,HTTP在端口80上运行,而HTTPS在端口443上运行的原因。)

您可以使用foreman(https://github.com/ddollar/foreman);

您使用2个进程创建一个Procfile,然后使用
forman start
命令启动这两个进程

将其放在名为
Procfile
的文件中:

web: thin start
ssl: thin start --ssl
然后使用
工头启动
,他启动2流程。
这就是我如何使用。。。希望这对你有帮助

最简单的选择可能是运行两个独立的瘦实例:一个接受SSL请求,另一个接受明文请求。你为什么不想这样做?(或者,如果thin在另一个web服务器(如Apache或Nginx)后面运行,您只需要一个thin实例:前端服务器可以报告请求是否通过SSL传入。)您不能在同一端口上运行两个
thin
实例。您也不能在同一端口上同时接受HTTP和HTTPS连接。(这就是为什么默认情况下,HTTP在端口80上运行,而HTTPS在端口443上运行的原因。)啊,你说得对!我很困惑,因为端口80和443是隐藏的,因为它们是默认的。也许我需要弄清楚如何强制
重定向到
,将用户推到
https
。如果你想把上面的评论转换成答案,我会接受。我在3000端口上运行HTTP,在3001端口上运行HTTPS。您将如何为您的开发环境创建“智能重定向”策略,以便从HTTP重定向到HTTPS也会将端口从3000更改为3001?谢谢:)既然不能在同一端口上运行两个精简实例,这是如何工作的?即使您在另一个端口上启动ssl实例,比如说
瘦启动--ssl-p3001
,您如何在应用程序中智能地处理从http到https的重定向?@JZ11 Nginx将根据协议智能地处理重定向/转发。但我也想知道解决办法。