【问题标题】:How to set up local subdomains for Node.js app如何为 Node.js 应用程序设置本地子域
【发布时间】:2014-12-21 07:08:29
【问题描述】:

我正在 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 测试、迭代等需要很长时间。

【问题讨论】:

    标签: node.js express localhost subdomain


    【解决方案1】:

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

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

    你会得到你的子域

    【讨论】:

      【解决方案2】:

      在 Ubuntu 上

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

      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
      

      就是这样。希望这对您有所帮助。

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题,我找到了一个简单的解决方案。不要写sub1.localhost,而是尝试用lvh.me替换localhost,这是一个总是解析为本地主机的域,现在每当你写sub1.lvh.me,即使像sub1.lvh.me:3000这样的端口它仍然可以工作。

        【讨论】:

          【解决方案4】:

          我是模块的作者 :)

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

          本地主机是:

          127.0.0.1       localhost
          

          一个新的子域将是..

          127.0.0.1       sub1.localhost
          

          还有一个..

          127.0.0.1       sub2.localhost
          

          看看我在tests做了什么。

          【讨论】:

          • 这个解决方案似乎对我不起作用,您的测试似乎只检查本地主机(没有子域)和example.com。我可以通过将subdomain.example.com 添加到我的主机文件并将其用作我的开发网址来解决我的问题。
          • 对不起,实际原因是因为没有顶级域名,例如.com 或 .co.uk。我已经更新了 README 来描述这一点。
          猜你喜欢
          • 2020-08-18
          • 2011-08-04
          • 2012-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-10
          • 1970-01-01
          相关资源
          最近更新 更多