在EC2 AWS实例上仅运行Puma时使用Rails SSL

时间:2019-02-15 01:10:41

标签: ruby-on-rails amazon-web-services ssl amazon-ec2

规格:Rails 4.2.4,Ruby 2.1.9,在生产模式下运行puma,EC2实例

我有一个要安装在服务器上的SSL证书,但是使用这种方法无法产生结果

rails s puma -b 'ssl://0.0.0.0:9292?key=path_to_key.key&cert=path_to_cert.crt&verify_mode=none&ca=path_to_root_bundle.crt'

How to configure Rails with Puma to use SSL?

RAILS_ENV=production rvmsudo -E rails s puma -b "ssl://0.0.0.0:9292?key=${KEY_PATH}&cert=${CERT_PATH}&verify_mode=peer&ca=${CERT_BUNDLE_PATH}" -p 80 

我得到的不是正常运行的服务器

  

Puma以单模式启动...   *版本3.2.0(红宝石2.1.9-p490),代号:Spring是一个日心视点   *最小线程数:0,最大线程数:16   *环境:生产   *正在听tcp:// ssl://0.0.0.0:9292?key =〜/ evslideshow.key&cert =〜/ e3b162f57ea48f91.crt&verify_mode = peer&ca =〜/ gd_bundle-g2-g1.crt:80   退出中   > /home/ec2-user/.rvm/gems/ruby-2.1.9@slideshow/gems/puma-3.2.0/lib/puma/binder.rb:240:in   'initialize':getaddrinfo:名称或服务未知(SocketError)

现在我的想法正在发挥不同的作用。我只是在这里缺少使用彪马的一些基本方面吗?彪马文档非常害怕,这就是为什么我在这里问。或者我可以使用Nginx,因为互联网上似乎有很多关于使用SSL证书进行设置的文档。

如果有一个更简单的puma修复程序,那么我将使用它。

1 个答案:

答案 0 :(得分:0)

通过阅读puma的Github页面上的issue pages找到了解决方案。显然,尽管在此old stackoverflow answer

中已经说过了,但我们必须直接而不是通过rails server来调用puma。

工作代码是

RAILS_ENV=production rvmsudo -E puma -d -b "ssl://0.0.0.0:443?key=${KEY_PATH}&       
cert=${CERT_PATH}&verify_mode=peer&ca=${CERT_BUNDLE_PATH}" -p 80 

确保还要在生产配置文件中打开config.force_ssl。