powは素晴らしいですが、私のアプリの多くのものはhttpsを想定しており、それらすべてを調べて「開発環境でない場合」を追加するのは面倒です。powにhttpsを提供させることは可能ですか?
7 に答える
私が見つけた最も簡単な方法は、トンネルを使用することでした: https://github.com/jugyo/tunnels
$ gem install tunnels
$ rvmsudo tunnels # or just use sudo if using rbenv
構成は必要ありません。
オプション 1: TunnellessでPowを完了する
私はTunnels ソリューションに問題を抱えていました。これは素晴らしいものですが、ブラウザによって安全でないと認識されるため、たとえば CORS で遊んでいるときに頭痛の種になります。
私はPowSSL ソリューション(スタッドを使用するソリューション) をテストしましたが、HTTP_X_FORWARDED_PROTO. HTTPS でした)。
.devしかし、この後者のアプローチは、構成されたすべての POWドメインに対して有効な証明書を生成していたため、優れていました。
そこで、2 つのアプローチを組み合わせたtunnelssを構築しました。これはトンネルのフォークであり、証明書の生成を追加します!
楽しんでいただければ幸いです。完成させたい場合は、お気軽にプルリクエストを送信してください。今のところ、MacOS X で動作する高速ハックです...
オプション 2: Invokerに切り替える (今のところフォークを使用)
Invoker は、HTTPS サポートがネイティブに含まれているため、Pow の優れた代替品です。HTTPS を取得するために Pow の上に別のソリューションを追加する必要はありません!
ただし、Pow と比較すると、2 つの制限があることがわかりました。
- プロセスごとにコマンドを指定して、実行できるようにする必要があります。
- 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
このフォークを使用すると、たとえば~/.invoker.ini次のようなグローバル構成を使用できるようになります。
[my-rails-app]
port = 3000
[my-sinatra-app]
port = 9292
[default]
port = 9292
...そして、次のコマンドで Invoker をプロキシとして実行します。
invoker ~/.invoker.ini -d
stunnel を使用して、pow サーバーへのトンネルを作成します。
お気に入り:
stunnel3 -f -d 443 -r 127.0.0.1:80
POW は現在 SSL をサポートしていません ( https://github.com/37signals/pow/issues/5 )。しかし、他にも多くの人があなたと同じ欲求を持っているので、将来のリリースに含まれることを願っています!
コードを変更する手間をかけたくない場合の最良の代替ソリューションは、Apache をセットアップして開発用 SSL 証明書を生成することです。これには hosts ファイルを変更する必要があり、残念ながら POW ほど「洗練された」ものではありませんが、厄介な環境固有の条件を回避できるという利点があります。
編集:
最新の更新は、次のガイドで概説されているように、Nginx を使用して POW を SSL で構成できることです。
最近、スタッド トンネルを使用するスクリプトを作成しました。 https://gist.github.com/2050941#file_gistfile1.md
現在、nginx を介して SSL プロキシを設定することにより、POW を使用しながら SSL を使用する方法があります。
見てみましょう: http://shiny-bits-of-code.tumblr.com/post/4749553253/ssl-proxy-with-nginx
これはここでもうまくカバーされています: