2014-10-25 20 views
8

Tôi đang chạy một ứng dụng tốc hành trên node.js. Ứng dụng sử dụng express-subdomain module để giúp xử lý các tuyến đường cho hai tên miền phụ khác nhau (sub1.example.com và sub2.example.com). Tôi đang lưu trữ ứng dụng trên AWS Elastic Beanstalk. Trong môi trường sản xuất của tôi, mọi thứ đều hoạt động tốt. Nhưng trên máy địa phương của tôi, tôi không thể làm việc này được. Tôi đã thử thêm tên miền phụ vào tệp máy chủ của mình 127.0.0.1 localhost sub1.localhost sub2.localhost. Mặc dù điều đó cho phép tôi thêm một tên miền phụ vào localhost, nhưng mô-đun không nhận ra đây là một tên miền phụ hợp lệ và tìm kiếm các tuyến đường phụ trong các tuyến gốc của tôi.Cách thiết lập tên miền phụ địa phương cho ứng dụng Node.js

Trong main.js:

var routes = require('./routes/index')(passport); 
var sub1_routes = require('./routes/sub1')(passport); 
var sub2_routes = require('./routes/sub2')(passport); 

app.use(subdomain('sub1', sub1_routes)); 
app.use(subdomain('sub2', sub1_routes)); 
app.use('/', routes); 

tôi cần để có thể xử lý này tại địa phương. Phải mất nhiều thời gian để đẩy một sự thay đổi nhỏ để kiểm tra AWS, lặp vv

Trả lời

20

Tôi là tác giả của các mô-đun :)

Đối với mỗi tên miền phụ mới mà bạn muốn kiểm tra tại địa phương bạn phải thêm vào của bạn/etc/hosts. Vì vậy, ví dụ:

localhost là:

127.0.0.1  localhost 

một tên miền phụ mới sẽ là ..

127.0.0.1  sub1.localhost 

và khác ..

127.0.0.1  sub2.localhost 

Kiểm tra ra những gì tôi đã làm trong số tests.

+0

Giải pháp này dường như không hoạt động đối với tôi và các thử nghiệm của bạn dường như chỉ kiểm tra localhost (không có tên miền phụ) và 'example.com'. Tôi đã có thể khắc phục sự cố của mình bằng cách thêm 'subdomain.example.com' vào tệp máy chủ lưu trữ của tôi và sử dụng tệp đó làm url của tôi. – Jordan

+2

Xin lỗi lý do thực tế là vì không có miền cấp cao nhất, ví dụ: .com hoặc .co.uk. Tôi đã cập nhật README để mô tả điều này. – bmullan91

3

Tôi gặp vấn đề chính xác và tôi đã tìm thấy một giải pháp đơn giản. Thay vì viết sub1.localhost, hãy thử thay thế localhost bằng lvh.me đây là tên miền luôn phân giải thành máy chủ cục bộ và hiện tại bất cứ khi nào bạn viết sub1.lvh.me mặc dù cổng như sub1.lvh.me:3000 nó vẫn hoạt động.

+0

Tên miền là ai? Đó là khá tuyệt vời. –

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