6

Tôi đang lưu trữ ứng dụng Rails trên Rackspace với máy chủ web nginx.kết nối() không thành công (111: Kết nối bị từ chối) trong khi kết nối với thượng nguồn

Khi gọi bất kỳ API Rails nào, tôi thấy thông báo này trong /var/log/nginx/error.log: * 49 kết nối() không thành công (111: Kết nối bị từ chối) trong khi kết nối với thượng nguồn, máy khách: 10.189.254.5, server:, yêu cầu: "POST/api/v1/người dùng/sign_in HTTP/1.1", thượng nguồn: "http://127.0.0.1:3001/api/v1/users/sign_in", người dẫn chương: "anthemapp.com"

  1. khối thượng nguồn là gì?
  2. /etc/nginx/sites-available/default là gì? Đây có phải là nơi tôi có thể cấu hình không?
  3. Tại sao tôi nhận được lỗi ở trên?

Tôi đã dành vài giờ với 5-6 người công nghệ Rackspace khác nhau (họ không biết cách giải quyết vấn đề này). Tất cả điều này bắt đầu khi tôi đưa máy chủ vào chế độ cứu hộ và làm theo các bước sau đây: https://community.rackspace.com/products/f/25/t/69. Khi tôi ra khỏi chế độ cứu hộ và khởi động lại máy chủ, tôi bắt đầu nhận được lỗi mà tôi đang viết. Tnx!

Trả lời

9

Nginx là máy chủ proxy đảo ngược - vai trò của máy chủ trên máy chủ của bạn là chấp nhận yêu cầu HTTP và ủy quyền chúng cho một quy trình khác trên cùng một máy chủ. "Thượng nguồn" mà thông báo lỗi đang nói đến là đề cập đến bit trong cấu hình của nginx (một phần trong số đó là tệp /etc/nginx/sites-available/default) cho biết nơi gửi yêu cầu đến. Thông báo lỗi bạn đang thấy cho biết nginx đã nhận được yêu cầu, nhưng không thể gửi yêu cầu đó đến quá trình khác mà nó được cho là.

Khi máy chủ của bạn khởi động lại, quá trình nginx bắt đầu sao lưu, nhưng quá trình Rails của bạn - quá trình có nghĩa là lắng nghe trên cổng 3001 - không!

Cách bạn khởi động lại quy trình Rails phụ thuộc vào cách bạn đã bắt đầu quá trình trước đó và cách máy chủ của bạn được định cấu hình. Nó có thể đơn giản như cd 'ing vào thư mục ứng dụng Rails của bạn trên máy chủ và chạy:

rails server -b 127.0.0.1 -p 3001 -e production -d 

... nhưng, để ngăn chặn các vấn đề như điều này xảy ra trong tương lai (và để cải thiện hiệu suất của bạn Ứng dụng Rails!), Sẽ tốt hơn nếu sử dụng một số loại máy chủ ứng dụng Rails sẵn sàng sản xuất. Tôi khuyên bạn nên sử dụng Phusion Passenger vì đó là giải pháp chìa khóa trao tay nhiều nhất - user's guide for nginx mô tả cài đặt và cấu hình của chúng - nhưng có nhiều lựa chọn thay thế. Có một cách viết tuyệt vời về các tùy chọn của bạn, ý nghĩa của chúng và cách chúng liên quan đến số the top answer of this StackOverflow question.

+0

Thans Ash! Tôi đang sử dụng Thin làm máy chủ ứng dụng của mình. Làm thế nào tôi có thể đảm bảo rằng Thin đang chạy? Làm cách nào để gỡ lỗi cấu hình giữa nginx và Thin? – etayluz

+0

Ah, tốt, bạn đang sử dụng một cái gì đó khác với WEBrick rồi! Tôi đã không sử dụng Thin cụ thể bản thân mình, nhưng một cách nhanh chóng 'ps -ef | grep thin' sẽ hiển thị cho bạn nếu có bất kỳ quá trình mỏng nào đang chạy. –

+0

Ngoài ra: có vẻ như 'sudo thin install' sẽ thực sự viết cho bạn một tập lệnh'/etc/init.d' sẽ đảm bảo rằng chạy mỏng khi khởi động. Đó là tiện dụng! Đây là một bài đăng trên blog mà tôi thấy rằng nói về nó một chút: http://jordanhollinger.com/2011/04/22/how-to-use-thin-effectivly/ –

0

Trong trường hợp của tôi, tôi cần phải chạy:

bundle install 
bundle update 

và sau đó:

sudo stop puma-manager 
sudo start puma-manager 
0

này được giải quyết khi tôi chạy dưới lệnh

cap production puma:restart 

Nó xảy ra đôi khi nếu chúng ta chuyển đổi phiên bản ruby ​​sang sản xuất

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