2013-03-05 23 views
5

Tôi nghĩ rằng tôi đang ở trên đầu của tôi và không thể tìm ra cách để gỡ lỗi hoặc đi đâu từ đây? !! Bất kỳ sự hướng dẫn sẽ được đánh giá rất nhiều!Rails/Rack ... Rack :: ReverseProxy Gây Yêu cầu Timeout

Vấn đề:

  • Development Environment: mọi thứ hoạt động
  • sản xuất: tôi nhận được "Yêu cầu thời gian chờ" lỗi

Mục tiêu:

Có "www.site .com/blog "hiển thị nội dung từ" blog.site.com "mà không cần chuyển hướng/thay đổi lông mày URL er

Cài đặt

  • www.site.com là một ứng dụng Rails trên Heroku
  • blog.site.com là WordPress trên Bluehost

Vì vậy, tôi không có quyền truy cập vào cấu hình máy chủ

Cách tiếp cận

Sử dụng rack-reverse-proxy đá quý như mô tả trong How can I use a subdirectory instead of a subdomain? bởi jplewicke

Thực hiện

Gemfile

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

config.ru (ngay trước khi chạy 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/") 

Kết quả/Vấn đề

Nó hoạt động lớn trong phát triển trên máy tính của tôi, nhưng khi tôi đặt nó trong sản xuất nó lần ra ngoài. Nó không chỉ hết thời gian mà sau đó toàn bộ ứng dụng bị treo lên hoặc một cái gì đó, tức là mọi yêu cầu lần ra ngay cả www.site.com (đã làm việc trước khi thử blog.site.com). Sau khoảng 5-10mins www.site.com hoạt động trở lại nhưng blog.site.com hết thời gian.

Logs

2013-03-05 05: 54: 19 + 00: 00 ứng dụng web.1 - - Bắt đầu "/ tài nguyên" cho 66.108.140.26/cpe-66-108 -140-26.nyc.res.rr.com tại 2013-03-05 05:54:19 +0000

2013-03-05 05: 54: 19 + 00: 00 bộ định tuyến heroku - - at = thông tin phương thức = GET path =/blog host = www.site.com fwd = "66.108.140.26/cpe-66-108-140-26.nyc.res.rr.com "dyno = web.1 queue = 0 wait = 0ms connect = 1ms service = 7ms status = 301 bytes = 105

2013- 03-05 05: 54: 49 + 00: 00 bộ định tuyến heroku - - at = mã lỗi = H12 desc = "Yêu cầu thời gian chờ" phương pháp = GET đường dẫn =/blog/ máy chủ = www.site.com fwd = "66.108 .140.26/cpe-66-108-140-26.nyc.res.rr.com "dyno = web.1 queue = 0ms wait = 0ms connect = 2ms service = 30000ms status = 503 bytes = 0

gỡ lỗi

tôi đã cố gắng bật gỡ lỗi trong sản xuất ...

config/môi trường/production.rb

config.consider_all_requests_local = true 
config.log_level = :debug 

nhưng không thực sự xuất hiện chỉ là một generic, Lỗi

ứng dụng ... của bạn không thể phục vụ trang ... thử lại .... kiểm tra nhật ký.

Đó là điều duy nhất mà loại có ý nghĩa vì nó được làm việc trong Phát triển

Mọi góp ý hoặc ý tưởng về những gì để làm gì? Cảm ơn!

+0

'config.assets.debug = true' chỉ bật tính năng gỡ lỗi nội dung Rails, ý của bạn là bật đăng nhập gỡ lỗi trong' production.rb'? Nếu vậy, hãy sử dụng 'config.log_level =: debug' –

+0

@stuart thanks. Đó là một lỗi đánh máy trong câu hỏi. Tôi đã sửa nó ở trên. 'config.log_level =: debug' là cài đặt hiện tại. – haley

+0

Mất bao lâu để proxy tải trang cho bạn trong quá trình phát triển? Heroku có một số thông tin về lỗi [Yêu cầu thời gian chờ] này (https://devcenter.heroku.com/articles/request-timeout) có thể được sử dụng. Có thể chỉ là việc ủy ​​nhiệm các trang đó trong môi trường Heroku triển khai mất nhiều thời gian hơn? –

Trả lời

0

tôi chỉ thiết lập này trên đường ray 4. Nó được làm việc trên tất cả các thư mục con sử dụng:

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

nhưng nó đã đáp ứng một chuyển hướng vĩnh viễn (301) khi đến thăm/blog mà không cần thư mục con.

Để giải quyết sự cố, chỉ cần viết lại/blog/blog/home và đảm bảo thêm liên kết bí danh này vào blog của bạn!

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

Có thể ai đó có thể cho chúng tôi biết giả thuyết này là đúng: Thường thì công cụ blog có thể chuyển hướng trên trang chủ có thể làm hỏng proxy.

Chúc vui vẻ!

Các vấn đề liên quan