Ruby on rails 使用HTTP和HTTPS的瘦Web服务器
我正在使用瘦web服务器为我的Rails应用程序提供服务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(根据要求将注释转换为答案) 最简单的
- 使用
启动服务器可提供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将根据协议智能地处理重定向/转发。但我也想知道解决办法。