所以我在端口 8081 上运行了一个 nodejs 应用程序:
http://mysite.com:8081/
我想简单地访问它,http://mysite.com/
所以我用 expressjs 设置了一个虚拟主机:
app.use(express.vhost('yugentext.com', app));
这似乎太容易了,而且行不通。我对 expressjs 虚拟主机的工作方式感到困惑吗?
如果您想通过 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 应用程序的问题
我想你在做 app.listen(8081)
。你应该这样做app.listen(80)
。我没有使用 express vhosts 的经验,但是对于这个简单的用例,您不需要它们。
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