[英]How to set up local subdomains for Node.js app
我正在node.js上運行一個快速應用程序。 該應用程序使用express-subdomain模塊來幫助處理兩個不同子域(sub1.example.com和sub2.example.com)的路由。 我在AWS Elastic Beanstalk上托管應用程序。 在我的生產環境中,一切都很棒。 但是在我的本地機器上,我無法讓它工作。 我嘗試將子域添加到我的主機文件127.0.0.1 localhost sub1.localhost sub2.localhost
。 雖然這允許我將子域添加到localhost,但模塊不會將其識別為有效的子域,因此在我的根路由中搜索子域路由。
在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);
我需要能夠在本地處理這個問題。 將一個小的更改推送到AWS測試,迭代等需要花費很多時間。
我是模塊的作者:)
對於您希望在本地測試的每個新子域,必須添加到/ etc / hosts文件中。 例如:
localhost是:
127.0.0.1 localhost
一個新的子域名將是......
127.0.0.1 sub1.localhost
和另一個..
127.0.0.1 sub2.localhost
看看我在測試中做了些什么。
我有同樣的問題,我找到了一個簡單的解決方案。 而不是寫的sub1.localhost
嘗試替換localhost
與lvh.me
這是始終解析本地主機,現在只要你寫了一個域sub1.lvh.me
即使像端口sub1.lvh.me:3000
它仍然會正常工作。
要為localhost創建子域,您只需按照兩個簡單的步驟操作即可。
按CTRL + ALT + T
打開終端,然后運行以下命令:
sudo vi hosts
sudo -i gedit /etc/hosts # to edit /etc/hosts file
一旦你運行第二個命令/etc/hosts
文件將打開,現在這是你需要定義子域的地方。
示例: localhost
是:
127.0.0.1 //our localhost
define new subdomain:
127.0.0.1 example.localhost # first
和另一個..
127.0.0.1 demo.localhost #second
而已。 希望這有用。
有一個很棒的網站,有人托管給我們所有人。
localtest.me
所有請求都將路由到127.0.0.1,包括子域。 例如something.localtest.me:3000
將解析為127.0.0.1:3000
但是,例如,在你的Express應用程序中,如果你這樣做
app.get('*', (req, res) => {
console.log(req.subdomains); // [ something ]
});
你會得到你的子域名
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.