2012-06-29 24 views
5

Tôi đang sử dụng vhost phần mềm trung gian thể hiện/kết nối và tôi hơi bối rối về cách sử dụng nó. Tôi muốn có một tập hợp các tuyến đường áp dụng cho các máy chủ có tên miền phụ và một bộ khác được áp dụng cho các máy chủ không có tên miền phụ.Chỉ định tuyến đường theo tên miền phụ bằng Express bằng cách sử dụng phần mềm trung gian vhost

Trong file app.js tôi, tôi có

var app = express.createServer(); 

app.use...(middlware)... 
app.use(express.vhost('*.host', require('./domain_routing')("yes"))); 
app.use(express.vhost('host', require('./domain_routing')("no"))); 
app.use...(middlware)... 

app.listen(8000); 

và sau đó trong domain_routing.js:

module.exports = function(subdomain){ 

    var app = express.createServer(); 

    require('./routes')(app, subdomain); 

    return app; 
} 

và sau đó trong routes.js tôi có kế hoạch để chạy bộ tuyến đường, phụ thuộc vào việc biến subdomain đã chuyển vào là "yes" hoặc "no".

Tôi đang đi đúng hướng hay đây không phải là cách bạn sử dụng phần mềm trung gian này? Tôi là một chút bối rối trên thực tế là có hai trường hợp máy chủ app được tạo ra (vì đó là cách ví dụ trên web dường như làm việc). Thay vào đó tôi có nên vượt qua trong trường hợp máy chủ app gốc và chỉ sử dụng thay vì tạo một tệp riêng biệt thay cho bộ định tuyến phụ không?

Trả lời

2

Có, bạn đang đi đúng hướng. Bạn nên có một phiên bản máy chủ khác nhau cho từng vhost. Có thể là http.Server hoặc express app.

Nếu bạn vượt qua số app gốc, yêu cầu bạn gửi tới vhost sẽ được phát ra ứng dụng gốc. Vì vậy, trừ khi vhost có đường dẫn không được sử dụng trong máy chủ gốc, nó sẽ nhận được phản hồi như thể yêu cầu được gửi đến máy chủ gốc.

Từ các tài liệu kết nối

connect() 
    .use(connect.vhost('foo.com', fooApp)) 
    .use(connect.vhost('bar.com', barApp)) 
    .use(connect.vhost('*.com', mainApp)) 
+0

Cảm ơn! Và câu hỏi khác của tôi là nếu tôi chỉ định phần mềm trung gian được sử dụng cho cá thể máy chủ ban đầu và sau đó tôi sử dụng các cá thể máy chủ riêng biệt cho vhost, thì phần mềm trung gian được sử dụng cho máy chủ gốc có được chuyển sang vhost không? Hoặc thay vào đó tôi nên sử dụng phần mềm trung gian độc quyền trên vhost (ngoại trừ phần mềm trung gian vhost trên máy chủ gốc) Về cơ bản, tôi đang tìm cách sử dụng phần mềm trung gian trên tất cả các vhost có thể, thay vì phải sử dụng cùng phần mềm trung gian trên mỗi một trong số các vhosts là loại lặp đi lặp lại ... – user730569

+0

Không, bạn không cần sử dụng phần mềm trung gian độc quyền trên tất cả các vhost. Bất kỳ phần mềm trung gian nào bạn muốn sử dụng cho tất cả các ứng dụng đều có thể là '.use''d trước khi vhost là' .use''d –

+0

Thật tuyệt vời! Nhưng ngoài sự tò mò, nó hoạt động như thế nào? Tôi đoán tôi là một chút bối rối như những gì 'server.emit (" yêu cầu ", req, res);' hiện đằng sau hậu trường. – user730569

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