【问题标题】:Is there an easy way to have pow serve https?有没有一种简单的方法可以让 pow 为 https 服务?
【发布时间】:2011-08-31 12:48:35
【问题描述】:

pow 很棒,但是我的应用程序中的许多东西都假设为 https,并且通过它们并添加“如果不是开发环境”会很痛苦。是否可以 pow 服务 https?

【问题讨论】:

    标签: ruby-on-rails ssl https rack rack-pow


    【解决方案1】:

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

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

    编辑:

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

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

    【讨论】:

      【解决方案2】:

      选项 1:使用 Tunnelss 完成 Pow

      我一直遇到Tunnels 解决方案 的问题,这很好,但会被浏览器视为不安全,这会让你在玩CORS 时感到头疼例如。

      我已经测试了 PowSSL 解决方案(使用 Stud 的解决方案),但是它缺少 HTTP_X_FORWARDED_PROTO,当您的应用需要知道它是否具有通过 HTTP 或 HTTPS 请求(好吧,它永远不会知道它是 HTTPS)。

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

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

      我希望你会喜欢它,如果你想完成它,请随时发送拉取请求,这只是目前在 MacOS X 上工作的快速破解......

      选项 2:切换到 Invoker(暂时使用 my fork...)

      Invoker 是 Pow 的绝佳替代品,因为它本身包含 HTTPS 支持。您无需在 Pow 之上添加其他解决方案即可获得 HTTPS!

      但是,与 Pow 相比,我发现它有两个限制:

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

      这些限制并不难克服,我做了一个pull request 并进行了 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
      

      有了这个fork,你就可以使用全局配置,例如~/.invoker.ini,就像这样:

      [my-rails-app]
      port = 3000
      
      [my-sinatra-app]
      port = 9292
      
      [default]
      port = 9292
      

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

      invoker ~/.invoker.ini -d
      

      【讨论】:

      • 这个 gem 令人难以置信,它解决了我在 pow 和开发环境中遇到的最后一个烦人的问题。感谢分享。
      • 谢谢@geoffharcourt,我很高兴它有用!
      • 这周我花了几天的时间试图让 pow 在 SSL 上运行,因为 Chrome 63 正在强制它在 .dev 域上运行。 Tunnelss 是迄今为止最简单、最干净的解决方案。太棒了!
      【解决方案3】:

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

      $ gem install tunnels
      $ rvmsudo tunnels   # or just use sudo if using rbenv
      

      无需配置。

      【讨论】:

      • 这样的解决方案可以节省大量时间!太棒了!
      【解决方案4】:

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

      http://railscasts.com/episodes/352-securing-an-api

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 这是一个很好的解决方案,我从 Pow+Tunnels 切换到您的 PowSSL 脚本,谢谢!但是我很遗憾,stud 没有设置 HTTP_X_FORWARDED_PROTO 标头,而 Tunnels 有。它阻止我在我的应用程序上执行正确的 HTTPS 重定向规则,否则我会得到一个重定向循环。关于如何解决这个问题的任何想法?
        【解决方案6】:

        使用 stunnel 创建通向 pow 服务器的隧道。

        喜欢:

        stunnel3 -f -d 443 -r 127.0.0.1:80
        

        【讨论】:

        【解决方案7】:

        目前有一种方法可以在使用 POW 的同时使用 SSL,方法是通过 nginx 设置 SSL 代理。

        看看:http://shiny-bits-of-code.tumblr.com/post/4749553253/ssl-proxy-with-nginx

        【讨论】:

        • 网址现在是 404ing。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-15
        • 1970-01-01
        • 1970-01-01
        • 2011-08-23
        • 1970-01-01
        相关资源
        最近更新 更多