通过HTTP和HTTPS使用瘦Web服务器
我正在使用瘦Web服务器来服务我的Rails应用程序。通过HTTP和HTTPS使用瘦Web服务器
- 以
thin start
启动服务器会提供http
请求。 - 使用
thin start --ssl
启动服务器服务https
请求。
有没有办法有thin
服务都http
和https
请求并发?
我问的原因是因为当我在我的控制器中使用redirect_to some_path
时,它们重定向到http
。由于thin
正在服务https
请求,因此不提供任何内容。
注意:我在Rails 3.0.7
中使用Rack::SSL
。
(注释转换成回答的请求。)
简单的选择可能是运行的薄两个单独的实例:一个接受SSL请求和一个接受明文请求。任何你不想这样做的理由? (或者,如果在另一个Web服务器(如Apache或Nginx)后面运行瘦客户端,则只需要瘦客户端的一个实例:前端服务器可以报告请求是否通过SSL发送。)
您不能同时接受HTTP和同一端口上的HTTPS连接。 (这是默认约定,HTTP运行在端口80上的原因,而HTTPS运行在端口443上。)
您可以使用工头(https://github.com/ddollar/foreman);
您使用2进程创建Procfile,然后使用forman start
命令启动这两个进程。
把这个称为Procfile
文件:
web: thin start
ssl: thin start --ssl
然后使用foreman start
,他开始了2个过程。 这是我如何使用...希望这可以帮助你!
这是如何工作的,因为你不能在同一个端口上运行两个瘦运行实例?即使你在另一个端口上启动ssl实例,比如说'thin start --ssl -p 3001',你如何在你的应用程序中智能地处理从http到https的重定向? – jamesfzhang 2013-10-02 17:16:46
@ JZ11 Nginx将根据协议智能地处理重定向/转发。但我也想知道解决方法。 – 2013-10-10 04:44:00
最简单的选项可能是运行两个单独的瘦客户端:一个接受SSL请求,一个接受明文请求。任何你不想这样做的理由? (或者,如果thin在另一个web服务器(如Apache或Nginx)后面运行,则只需要一个精简实例:前端服务器可以报告请求是否通过SSL进入。) – 2012-03-04 23:36:14
您不能运行两个在同一个端口上“薄”。 – 2012-03-04 23:39:23
无法在同一端口上同时接受HTTP和HTTPS连接。 (这就是为什么默认情况下,HTTP在端口80上运行,而HTTPS在端口443上运行。) – 2012-03-04 23:40:29