如何为Node.js应用程序设置本地子域

时间:2014-10-25 17:05:39

标签: node.js express localhost subdomain

我正在node.js上运行一个快速应用程序。该应用使用express-subdomain module来帮助处理两个不同子域(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测试,迭代等等需要花费很多时间。

4 个答案:

答案 0 :(得分:23)

我是该模块的作者:)

对于您希望在本地测试的每个新子域,必须添加到/ etc / hosts文件中。例如:

localhost是:

127.0.0.1       localhost

新的子域名将是..

127.0.0.1       sub1.localhost

和另一个..

127.0.0.1       sub2.localhost

查看我在tests中所做的工作。

答案 1 :(得分:8)

我有同样的问题,我找到了一个简单的解决方案。而不是写sub1.localhost尝试用localhost替换lvh.me这是一个总是解析为localhost的域,现在每当你写sub1.lvh.me时,即使像sub1.lvh.me:3000这样的端口也是如此它仍然有用。

答案 2 :(得分:0)

在Ubuntu上

要为localhost创建子域,您只需执行2个简单步骤。

D打开终端,然后运行以下命令:

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

就是这样。希望这会有所帮助。

答案 3 :(得分:0)

有一个很棒的网站,有人为我们所有人托管。

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 ]
 });

您将获得您的子域

相关问题