【发布时间】:2012-03-22 12:23:56
【问题描述】:
我正在使用 Thin Web 服务器来为我的 Rails 应用程序提供服务。
- 使用
thin start启动服务器会处理http请求。 - 使用
thin start --ssl启动服务器会处理https请求。
有没有办法让thin 同时处理http 和https 请求?
我问的原因是因为当我在控制器中使用redirect_to some_path 时,它们会重定向到http。由于thin 正在处理https 请求,因此不会呈现任何内容。
注意:我在Rails 3.0.7 中使用Rack::SSL。
【问题讨论】:
-
最简单的选择可能是运行两个单独的瘦实例:一个接受 SSL 请求,一个接受明文请求。你有什么理由不想这样做? (或者,如果 Thin 在另一台 Web 服务器(如 Apache 或 Nginx)后面运行,您只需要一个 Thin 实例:前端服务器可以报告请求是否通过 SSL 进入。)
-
您不能在同一个端口上运行
thin的两个实例。 -
您也不能在同一个端口上同时接受 HTTP 和 HTTPS 连接。 (这就是为什么默认情况下,HTTP 在端口 80 上运行,而 HTTPS 在端口 443 上运行。)
-
啊,你是对的!我很困惑,因为端口 80 和 443 是隐藏的,因为它们是默认的。也许我需要弄清楚如何强制
redirect_to将用户推送到https。如果您想将上面的评论转换为答案,我会接受。 -
我在端口 3000 上运行 HTTP,在端口 3001 上运行 HTTPS。如何为您的开发环境创建“智能重定向”策略,以便从 HTTP 重定向到 HTTPS 也会将端口从 3000 更改为3001?谢谢:)
标签: ruby-on-rails ruby-on-rails-3 ssl https