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!
'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' –
@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
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? –