5

私は頭がいっぱいで、デバッグ方法やここからどこへ行くべきかわかりません?!! どんなガイダンスも大歓迎です!

問題:

  • 開発環境: すべてが機能します
  • プロダクション: 「リクエストのタイムアウト」エラーが発生します

ゴール:

「www.site.com/blog」に「blog.site.com」のコンテンツをリダイレクト/変更ブラウザ URL なしで表示させる

設定

  • www.site.com は Heroku の Rails アプリです
  • blog.site.com は Bluehost の WordPress です

そのため、サーバー構成にアクセスできません

アプローチ

サブドメインの代わりにサブディレクトリを使用するにはどうすればよいですか? で説明されているように、 rack-reverse-proxy gemを使用します。によってjplewicke

実装

Gemfile

gem "rack-reverse-proxy", :require => "rack/reverse_proxy"

config.ru ( AppName ::Applicationを実行する直前)

use Rack::ReverseProxy do
  reverse_proxy(/^\/blog(\/.*)$/,'http://blog.site.com$1',
  opts = {:preserve_host => true})
end

config/routes.rb

match "/blog" => redirect("/blog/")

結果/問題

私のマシンでの開発ではうまく機能しますが、本番環境に置くとタイムアウトします。タイムアウトするだけでなく、その後アプリケーション全体がハングアップするか、何かが発生します。つまり、www.site.com (blog.site.com を試す前は機能していました) でさえ、すべての要求がタイムアウトします。約 5 ~ 10 分後、www.site.com は再び機能しますが、blog.site.com はタイムアウトします。

ログ

2013-03-05 05:54:19+00:00 アプリ web.1 - - 2013 年に 66.108.140.26/cpe-66-108-140-26.nyc.res.rr.com の GET "/resource" を開始しました-03-05 05:54:19 +0000

2013-03-05 05:54:19+00:00 heroku ルーター - - at=info method=GET path=/blog host=www.site.com fwd="66.108.140.26/cpe-66-108-140- 26.nyc.res.rr.com" dyno=web.1 キュー=0 待機=0ms 接続=1ms サービス=7ms ステータス=301 バイト=105

2013-03-05 05:54:49+00:00 heroku router - - at=error code=H12 desc="Request timeout" method=GET path=/blog/ host=www.site.com fwd="66.108. 140.26/cpe-66-108-140-26.nyc.res.rr.com" dyno=web.1 キュー=0ms 待機=0ms 接続=2ms サービス=30000ms ステータス=503 バイト=0

デバッグ

本番環境でデバッグをオンにしてみました...

config/environments/production.rb

config.consider_all_requests_local = true
config.log_level = :debug

しかし、実際にはジェネリックだけでは何も表示されません。

アプリケーション エラー... ページを表示できませんでした... 再試行してください... ログを確認してください。

開発に取り組んでいるので、それが理にかなっている唯一のことです

何をすべきかについての提案やアイデアはありますか?ありがとう!

4

1 に答える 1

0

Rails 4でこれをセットアップしました。次を使用してすべてのサブディレクトリで動作していました:

use Rack::ReverseProxy do
  reverse_proxy_options preserve_host: true
  reverse_proxy '/blog', 'http://grav.somedomain.net/'
end

しかし、サブディレクトリなしで /blog にアクセスすると、永続的なリダイレクト (301) に応答していました。

この問題を解決するには、/blog を /blog/home に書き換えて、このエイリアス リンクをブログに追加してください。

require 'rack/rewrite'
use Rack::Rewrite do
  rewrite   '/blog',  '/blog/home'
end

この仮説が正しいかどうか、誰かが教えてくれるかもしれません: ブログ エンジンがホームにリダイレクトを持っていることはよくあることで、おそらくプロキシを壊します。

素敵なものを持っています!

于 2016-02-27T15:21:16.060 に答える