有没有一种简单的方法让pow服务https?

Joh*_*hir 36 ssl https rack ruby-on-rails rack-pow

pow很棒,但是我的应用程序中的很多东西都假设是https,通过它们并添加"if not dev environment"会很痛苦.是否可以让pow服务https?

Car*_*ier 48

我发现最简单的方法是使用隧道:https://github.com/jugyo/tunnels

$ gem install tunnels
$ rvmsudo tunnels   # or just use sudo if using rbenv
Run Code Online (Sandbox Code Playgroud)

无需配置.


rch*_*ier 16

选项1:使用Tunnelss完成Pow

我一直有隧道解决方案的问题,这很好,但会被浏览器注意到不安全,这会让你在玩CORS时感到头疼.

我已经测试了PowSSL解决方案(使用Stud的解决方案),但它缺少了HTTP_X_FORWARDED_PROTO,当你的应用程序需要知道是否已经通过HTTP或HTTPS请求时,这将导致另一组令人头疼的问题(好吧,它永远不会知道)这是HTTPS).

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

所以我构建了tunnelss,结合了两种方法:它是一个隧道分支,它增加了证书生成!

我希望你会喜欢它,如果你想完成它,请随时发送拉动请求,这只是一个快速破解MacOS X的工具...

选项2:切换到Invoker(使用我的fork ...现在)

Invoker是Pow的绝佳替代品,因为它本身包含HTTPS支持.您不必在Pow之上添加另一个解决方案来获取HTTPS!

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

  • 你必须为每个进程指定一个命令,以便在运行它时,
  • 您不能拥有默认规则,处理对localhost的所有请求并将它们代理到特定应用程序.

这些限制并不难以克服,我通过2次更改提出了拉取请求.在它被接受之前,您可以使用以下方法安装分叉版本:

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
Run Code Online (Sandbox Code Playgroud)

使用此fork,您将能够使用全局配置,例如~/.invoker.ini:

[my-rails-app]
port = 3000

[my-sinatra-app]
port = 9292

[default]
port = 9292
Run Code Online (Sandbox Code Playgroud)

...并使用此命令将Invoker作为代理运行:

invoker ~/.invoker.ini -d
Run Code Online (Sandbox Code Playgroud)


Kev*_*tre 7

POW目前不支持SSL(https://github.com/37signals/pow/issues/5).然而,许多其他人也有同样的愿望,所以希望它将被包含在未来的版本中!

如果您不想轻松修改代码,那么您最好的替代解决方案是设置Apache并生成开发SSL证书.这将需要修改您的主机文件,并且不像POW那样"光滑",但从好的方面来说,它避免了讨厌的环境特定条件.

编辑:

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

https://gist.github.com/gvarela/928606/


Pau*_*son 7

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

喜欢:

stunnel3 -f -d 443 -r 127.0.0.1:80
Run Code Online (Sandbox Code Playgroud)


Pau*_*son 5

我最近创建了一个使用螺柱隧道的脚本. https://gist.github.com/2050941#file_gistfile1.md