2009-09-25 39 views
30

Tôi rất mới với Ruby on Rails vì vậy khi tôi cố gắng thực hiện theo hướng dẫn chính thức "Bắt đầu" trên đường ray, tôi hơi thất vọng vì đã xảy ra lỗi rất nhanh. Về cơ bản nó nói:Tại sao Ruby on Rails sử dụng http://0.0.0.0:3000 thay vì http: // localhost: 3000?

… điều hướng đến http://localhost:3000. Bạn sẽ thấy trang thông tin mặc định của Rails.

Nhưng khi tôi làm theo hướng dẫn, tôi nhận được

 
=> Rails 2.3.4 application starting on http://0.0.0.0:3000 

Sau khi thử cả hai địa chỉ, tôi biết rằng chúng trỏ tới điều tương tự, nhưng ai đó có thể giải thích cho tôi tại sao Ruby on Rails sử dụng http://0.0.0.0:3000 thay của http://localhost:3000?

Có cách nào để luôn có máy chủ WEBbrick sử dụng localhost không?

Trả lời

49

Máy chủ cục bộ có nghĩa là "máy chủ lưu trữ cục bộ" của bạn, thường được xác định bởi 127.0.0.1 và tất cả lưu lượng truy cập đến địa chỉ đó được định tuyến thông qua giao diện loopback. Nếu máy chủ Web của bạn đang lắng nghe các kết nối trên 127.0.0.1, điều này có nghĩa là nó chỉ chấp nhận các yêu cầu đến từ cùng một máy chủ.

0.0.0.0 có nghĩa là Rails đang nghe trên tất cả giao diện, không chỉ giao diện vòng lặp.

+7

Để thiết lập WEBrick chỉ để nghe trên máy chủ cục bộ, có nghĩa là các kết nối bên ngoài bị bỏ qua: script/server --binding = 127.0.0.1 – tadman

+5

FYI, chỉ định ràng buộc với 127.0.0.1 khi khởi động WEBrick cho tôi thực hiện kết nối đường ray cục bộ của tôi (và, do đó, kết nối web bên ngoài cũng) nhanh hơn nhiều. Vì vậy, nếu kết nối cục bộ của bạn chậm, tôi khuyên bạn nên @tadman đề xuất những gì. Trong Rails 3, đó là ** rails server --binding = 127.0.0.1 ** –

15

0.0.0.0 có nghĩa là tất cả các giao diện. Bao gồm 127.0.0.1 a.k.a. localhost.

0

Đường ray thực tế có các tùy chọn cấu hình khác nhau về việc nó có lắng nghe điều gì đó cụ thể hoặc tất cả giao diện hay không.

0

Chỉ cần để mọi người đều biết, trình duyệt firefox của tôi sẽ hiển thị một cách chính xác các máy chủ tại địa phương tổ chức nếu tôi truy cập http://localhost:3000/ nhưng nó không hiển thị khi tôi cố gắng để truy cập http://0.0.0.0:3000/ theo khuyến cáo của Ruby. Rõ ràng, theo một nghĩa nào đó, chúng không tương đương.

Tôi đang sử dụng Windows btw.

+0

'0.0.0.0' không phải là địa chỉ IP mà bạn thực sự có thể truy cập bằng ứng dụng khách. Nó chỉ đơn giản là một phím tắt cho cuộc gọi liên kết hệ thống để sử dụng _all_ các địa chỉ IP có sẵn. –

0

Đối với những người trong chúng ta sử dụng Nitrous.io máy chủ ảo envrionment để phát triển, tôi tin rằng chúng ta phải liên kết với 0.0.0.0 như không có localhost cho mỗi se.

0

Nếu bạn muốn localhost, một cách nhanh chóng là chỉ định ràng buộc rails s -blocalhost (và cổng có -pNNNN, các tùy chọn khác với rails s --help).

Máy chủ của tôi bắt đầu chạy theo mặc định trên localhost vì các lý do cần được điều tra. Kết quả là lvh.me ngừng hoạt động, ngăn không cho tôi chỉ định tên miền phụ (ví dụ: www.lvh.me:3000).

tôi "giải quyết" định này ràng buộc:

rails s -b0.0.0.0 # will work with lvh.me 
0

Khởi động lại os làm việc cho tôi. (Trên Mac v 10.12)

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