Ruby on rails 有没有简单的方法让战俘服兵役?

Ruby on rails 有没有简单的方法让战俘服兵役?,ruby-on-rails,ssl,https,rack,rack-pow,Ruby On Rails,Ssl,Https,Rack,Rack Pow,很好,但我的应用程序中的很多东西都采用https,如果不使用开发环境,那么仔细检查它们并添加“if not dev environment”将是一件痛苦的事情。有可能让pow提供https吗?pow目前不支持SSL()。然而,其他一些人也有你同样的愿望,所以希望它能包含在未来的版本中 如果您不想经历修改代码的麻烦,那么最好的替代解决方案是设置Apache并生成开发SSL证书。这将需要修改您的主机文件,不幸的是,它不像POW那样“圆滑”,但从有利的方面来说,它避免了烦人的特定于环境的条件 编辑:

很好,但我的应用程序中的很多东西都采用https,如果不使用开发环境,那么仔细检查它们并添加“if not dev environment”将是一件痛苦的事情。有可能让pow提供https吗?

pow目前不支持SSL()。然而,其他一些人也有你同样的愿望,所以希望它能包含在未来的版本中

如果您不想经历修改代码的麻烦,那么最好的替代解决方案是设置Apache并生成开发SSL证书。这将需要修改您的主机文件,不幸的是,它不像POW那样“圆滑”,但从有利的方面来说,它避免了烦人的特定于环境的条件

编辑:

最新的更新是,可以使用Nginx使用SSL配置POW,如下指南所述:


目前有一种方法可以通过nginx设置SSL代理,在仍然使用POW的情况下使用SSL


请看:

使用stunnel创建到pow服务器的隧道

比如:


我最近创建了一个脚本,该脚本使用了studtunnel。

这里也很好地介绍了这一点:


我发现最简单的方法是使用隧道:

无需配置。

选项1:配备 我一直对隧道解决方案有意见,这很好,但是浏览器会注意到它不安全,例如,在使用CORS时,它会让你头疼

我已经测试了PowSSL解决方案(使用Stud的解决方案),但是它缺少
HTTP\u X\u-FORWARDED\u-PROTO
,这将在应用程序需要知道它是通过HTTP还是HTTPS请求时给您带来另一组麻烦(当然,它永远不会知道它是HTTPS)

但是后面的方法很棒,因为它为所有配置的POW
.dev
域生成了有效的证书

因此,我构建了结合了两种方法的:这是一个分支隧道,它增加了证书生成

我希望你会喜欢它,如果你想完成它,请随时发送拉请求,这只是一个快速的黑客在MacOS X上的工作现在

选项2:切换到(目前使用…) Invoker是Pow的一个很好的替代品,因为它本机包含HTTPS支持。您不必在Pow上添加其他解决方案即可获得HTTPS

然而,与Pow相比,我发现它有两个局限性:

  • 您必须为每个进程指定一个命令,以便在中可以运行它
  • 您不能有一个默认规则来处理对localhost的所有请求并将它们代理给特定的应用程序
这些限制并不难克服,我做了两个改变。在被接受之前,您可以使用以下方法安装分叉版本:

git clone https://github.com/rchampourlier/invoker invoker -b proxy-only-mode
cd invoker
gem build invoker.gemspec
gem install invoker-1.5.0.gem
使用此fork,您将能够使用全局配置,例如
~/.invoker.ini
,如下所示:

[my-rails-app]
port = 3000

[my-sinatra-app]
port = 9292

[default]
port = 9292
…并使用以下命令将Invoker作为代理运行:

invoker ~/.invoker.ini -d

用于在OSX上的pow(或任何web服务器)前使用stunnel。@Brad您可能对我编写的使用stud的脚本感兴趣。它还为所有pow主机设置了有效的证书,这样您就不会在浏览器中收到ssl警告。这是一个很棒的解决方案,我从Pow+隧道切换到了您的PowSSL脚本,谢谢!但是我有一个遗憾,stud没有设置HTTP_X_FORWARDED_PROTO头,而Tunnels却设置了。它阻止我在我的应用程序上强制执行正确的HTTPS重定向规则,否则我会得到一个重定向循环。关于如何解决这个问题有什么想法吗?这个gem是难以置信的,它修复了我在pow和开发环境中遇到的最后一个恼人的问题。谢谢分享。谢谢@geoffharcourt,我很高兴它有用!本周我花了好几天的时间试图让pow通过SSL运行,因为Chrome63正在.dev域上强制使用它。隧道是迄今为止最简单、最干净的解决方案。好极了!这样的解决方案非常省时!令人惊叹的!URL现在是404。
[my-rails-app]
port = 3000

[my-sinatra-app]
port = 9292

[default]
port = 9292
invoker ~/.invoker.ini -d