2013-04-03 15 views
6

Tôi đang cố gắng để trang web được hỗ trợ Node.js của tôi chạy trên một cá thể phục vụ nhiều tên miền. Tôi có tên miền chính của mình, example.com và sau đó tôi có admin.example.comapi.example.com tất cả đều có các tuyến đường khác nhau, v.v. Tôi đang sử dụng Express.Tên miền phụ Node.js

Cho đến giờ tôi đã thêm hai bản ghi A cho tên miền phụ và cũng đã thêm hai mục nhập vào /var/vhosts trên hộp CentOS của tôi.

127.0.0.1 api.example.com 
127.0.0.1 admin.example.com 
127.0.0.1 example.com 

Tôi biết rằng Express có một phương pháp express.vhost vì vậy tôi đã cố gắng:

app.use(express.vhost('api.example.com', require('./lib/subdomains/api'))) 
app.use(express.vhost('admin.example.com', require('./lib/subdomains/admin'))) 

Nhưng đó vẫn chỉ phục vụ các tuyến đường chính của tôi được nhập khẩu dưới đây. Tôi đang thiếu gì?

+0

Có gì trong, nói, './Lib/tên miền phụ/api'? – robertklep

+0

Một cái gì đó dọc theo dòng [Gist] này (https://gist.github.com/jbrooksuk/5300772) điều tôi đang cố gắng làm là tại một thời điểm là 'app.use (express.vhost ('api.example .com ', require (' ./ lib/subdomains/api '). app))' – James

+0

Đây là [gist] (https://gist.github.com/robertklep/5300792) hoạt động tốt cho tôi. Bạn đang kiểm tra trong một trình duyệt hoặc với một công cụ CLI? Nếu sau này, nó có gửi đúng tiêu đề 'Host' không? – robertklep

Trả lời

9

Nếu có ai khác tìm thấy câu hỏi này, bạn có thể muốn kiểm tra xem bạn có đang truyền các thông số tuyến đường vhost của mình đúng cách hay không.

Tôi đã sử dụng:

app.get('/', function(res, req) { /* Do stuff.. */ } 

Khi nó nên được. Đối số đầu tiên cho hàm gọi lại là req, sau đó đối số thứ hai là res.

app.get('/', function(req, res) { /* Do stuff.. */ } 

Hãy siêng năng với mã của bạn :)

+1

Đây là gì? Cùng 2 dòng mã khi ý định rõ ràng là có một số khác biệt ??? – inteist

+7

(res, req) là cách khác xung quanh :) – orszaczky