使用ExpressJS部署nodejs应用程序

时间:2013-05-06 09:50:17

标签: node.js express

所以我在端口8081上运行了一个nodejs应用程序:

http://mysite.com:8081/

我想通过转到http://mysite.com/来访问它,所以我使用expressjs设置虚拟主机:

app.use(express.vhost('yugentext.com', app));

这似乎太容易了,而且不起作用。我对expressjs vhosts的工作方式感到困惑吗?

3 个答案:

答案 0 :(得分:3)

如果你想通过表达式来做这些,问题来自你的 dns设置,而不是快速代码。

在您的域中添加A entry,如下所示:

127.0.0.1 localhost *.mysite.com *.www.mysite.com

您应该等待DNS传播。 (从几秒到几小时)。

如果apache或其他Web服务器在端口80上运行任何vhost,则会发生冲突。

另一种方式:

nodejs和express远离apache和 nginx (vhost / proxy stuff)提供的性能。

Nginx> Apache(更适合nodejs)

创建从mysite.commysite.com:8080

的代理

通过这些方式,n​​odejs和express可以快速处理ui,方法,httpserver等,以及Nginx或Apache代理,vhost和管理静态资产。

在此处查看以下配置:Trouble with Nginx and Multiple Meteor/Nodejs Apps

答案 1 :(得分:1)

我认为你在做app.listen(8081)。你应该做app.listen(80)。我没有使用express vhosts的经验,但是对于这个简单的用例你不需要它们。

答案 2 :(得分:0)

upstream node-apps {
  server host_ip_1:3000;
  server host_ip_2:3000;
}

server {
    listen 80;

    server_name localhost;
        location / {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-NginX-Proxy true;
          proxy_pass http://node-apps/;
          proxy_redirect off;
        }
}

这是我的nginx配置,代理传递多个服务器,祝你好运:p