2012-03-04 36 views
12

Tôi đang sử dụng máy chủ web mỏng để phục vụ ứng dụng Rails của mình.Sử dụng Máy chủ web mỏng với HTTP và HTTPS

  • Khởi động máy chủ với thin start phục vụ yêu cầu http.
  • Khởi động máy chủ với thin start --ssl phục vụ yêu cầu https.

Có cách nào để có thin phục vụ cả httphttps yêu cầu đồng thời?

Lý do tôi hỏi là vì khi tôi sử dụng redirect_to some_path trong bộ điều khiển của mình, họ chuyển hướng đến http. Vì thin đang phục vụ https yêu cầu, không có gì được hiển thị.

Lưu ý: Tôi đang sử dụng Rack::SSL trong Rails 3.0.7.

+0

Tùy chọn đơn giản nhất có thể là chạy hai phiên bản mỏng riêng biệt: một trường hợp chấp nhận yêu cầu SSL và một yêu cầu chấp nhận yêu cầu rõ ràng. Bất kỳ lý do nào bạn không muốn làm điều này? (Hoặc, nếu mỏng đang chạy phía sau một máy chủ web khác, như Apache hoặc Nginx, bạn chỉ cần một phiên bản mỏng: máy chủ giao diện người dùng có thể báo cáo xem yêu cầu có đến qua SSL không.) –

+0

Bạn không thể chạy hai phiên bản 'thin' trên cùng một cổng. –

+3

Bạn không thể chấp nhận cả kết nối HTTP và HTTPS trên cùng một cổng. (Đây là lý do tại sao, theo quy ước mặc định, HTTP chạy trên cổng 80 trong khi HTTPS chạy trên cổng 443.) –

Trả lời

8

(Comment chuyển đổi sang trả lời theo yêu cầu.)

đơn giản lựa chọn có lẽ là để chạy hai trường hợp riêng biệt của mỏng: một chấp nhận yêu cầu SSL và một yêu cầu rõ chấp nhận. Bất kỳ lý do nào bạn không muốn làm điều này? (Hoặc, nếu mỏng chạy phía sau một máy chủ web khác, như Apache hoặc Nginx, bạn chỉ cần một phiên bản mỏng: máy chủ giao diện người dùng có thể báo cáo xem yêu cầu có đến qua SSL hay không.)

Bạn không thể chấp nhận cả hai HTTP và các kết nối HTTPS trên cùng một cổng. (Đây là lý do tại sao, theo quy ước mặc định, HTTP chạy trên cổng 80 trong khi HTTPS chạy trên cổng 443.)

4

bạn có thể sử dụng foreman (https://github.com/ddollar/foreman);

Bạn tạo một Procfile với 2 quy trình rồi bắt đầu cả hai với lệnh forman start.

đặt này trên một tập tin gọi là Procfile:

web: thin start 
ssl: thin start --ssl 

Sau đó sử dụng foreman start và ông bắt đầu quá trình 2. Đây là cách tôi đang sử dụng ... hy vọng điều này sẽ giúp bạn!

+2

Làm thế nào để làm việc này vì bạn không thể có 2 trường hợp chạy mỏng trên cùng một cổng?Và ngay cả khi bạn bắt đầu dụ ssl trên một cổng khác, hãy nói 'khởi động mỏng --ssl -p 3001', cách bạn xử lý thông minh chuyển hướng từ http đến https trong ứng dụng của bạn? – jamesfzhang

+1

@ JZ11 Nginx sẽ xử lý thông minh chuyển hướng/chuyển tiếp tùy thuộc vào giao thức. Nhưng tôi cũng muốn biết cách giải quyết. –

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