2

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

http://mysite.com:8081/

我想简单地访问它,http://mysite.com/所以我用 expressjs 设置了一个虚拟主机:

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

这似乎太容易了,而且行不通。我对 expressjs 虚拟主机的工作方式感到困惑吗?

4

3 回答 3

3

如果您想通过 express 做好这些,问题来自您的dns 设置,而不是来自 express 代码。

A entry像这样向您的域添加一个:

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

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

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

另一种方式:

nodejs 和 express 与 apache 和nginx (vhost/proxy 的东西)提供的性能相差甚远。

Nginx>Apache(更适合nodejs)

创建从mysite.com到的代理mysite.com:8080

在这些方式中,nodejs 和 express 处理 ui、方法、httpserver 等,以及 Nginx 或 Apache 代理、vhost,并快速管理您的静态资产。

在此处检查这些配置:Nginx 和多个 Meteor/Nodejs 应用程序的问题

于 2013-05-06T10:12:13.557 回答
1

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

于 2013-05-06T10:14:26.440 回答
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

于 2015-01-28T08:37:54.387 回答