2012-03-04 84 views
12

我正在使用瘦Web服务器来服务我的Rails应用程序。通过HTTP和HTTPS使用瘦Web服务器

  • thin start启动服务器会提供http请求。
  • 使用thin start --ssl启动服务器服务https请求。

有没有办法有thin服务都httphttps请求并发?

我问的原因是因为当我在我的控制器中使用redirect_to some_path时,它们重定向到http。由于thin正在服务https请求,因此不提供任何内容。

注意:我在Rails 3.0.7中使用Rack::SSL

+0

最简单的选项可能是运行两个单独的瘦客户端:一个接受SSL请求,一个接受明文请求。任何你不想这样做的理由? (或者,如果thin在另一个web服务器(如Apache或Nginx)后面运行,则只需要一个精简实例:前端服务器可以报告请求是否通过SSL进入。) – 2012-03-04 23:36:14

+0

您不能运行两个在同一个端口上“薄”。 – 2012-03-04 23:39:23

+3

无法在同一端口上同时接受HTTP和HTTPS连接。 (这就是为什么默认情况下,HTTP在端口80上运行,而HTTPS在端口443上运行。) – 2012-03-04 23:40:29

回答

8

(注释转换成回答的请求。)

简单的选择可能是运行的薄两个单独的实例:一个接受SSL请求和一个接受明文请求。任何你不想这样做的理由? (或者,如果在另一个Web服务器(如Apache或Nginx)后面运行瘦客户端,则只需要瘦客户端的一个实例:前端服务器可以报告请求是否通过SSL发送。)

您不能同时接受HTTP和同一端口上的HTTPS连接。 (这是默认约定,HTTP运行在端口80上的原因,而HTTPS运行在端口443上。)

4

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

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

把这个称为Procfile文件:

web: thin start 
ssl: thin start --ssl 

然后使用foreman start,他开始了2个过程。 这是我如何使用...希望这可以帮助你!

+2

这是如何工作的,因为你不能在同一个端口上运行两个瘦运行实例?即使你在另一个端口上启动ssl实例,比如说'thin start --ssl -p 3001',你如何在你的应用程序中智能地处理从http到https的重定向? – jamesfzhang 2013-10-02 17:16:46

+1

@ JZ11 Nginx将根据协议智能地处理重定向/转发。但我也想知道解决方法。 – 2013-10-10 04:44:00