我最近在CentOS 7.x上使用Thin作为Web服务器和Comodo的SSL证书设置了几个Ruby on Rails服务器。
我在force_ssl
文件中启用了config/environments/production.rb
选项,并且我使用以下命令运行我的服务器:
RAILS_ENV=production thin start -a <IP> -p 3000 --ssl --ssl-key-file <KEY FILE PATH> --ssl-cert-file <CERT FILE PATH>
我正在使用设计,所以在config/initializers/devise.rb
我设置了
config.rememberable_options = { secure: true }
我还在config/initializers/session_store.rb
Rails.application.config.session_store :cookie_store, key: '_secure_<domain>_session', httponly: true, secure: true
当我第一次通过HTTP从Internet浏览器访问我的服务器时,我收到一条空的响应消息(使用多个浏览器和多台计算机进行测试)。当我通过https直接访问它时,它解析得很好(并且SSL工作正常),当我接下来尝试通过http访问它时重定向就好了。我不知道如何使用nginx或Apache修复此栏。
以下是我读过的其他问题:
答案 0 :(得分:1)
Thin只能在一个端口上侦听,并且每个实例只能提供SSL或非SSL请求。当使用--ssl
启动精简时,它会尝试将入站连接作为TLS连接进行处理,并将删除它无法协商的连接(即,纯HTTP请求)。
您需要使用nginx(或其他一些反向代理)来侦听多个端口并终止SSL,然后转发到Thin。否则,您需要运行多个Thin实例,一个提供SSL,另一个不提供。