所以我在端口8081上运行了一个nodejs应用程序:
http://mysite.com:8081/
我想通过转到http://mysite.com/
来访问它,所以我使用expressjs设置虚拟主机:
app.use(express.vhost('yugentext.com', app));
这似乎太容易了,而且不起作用。我对expressjs vhosts的工作方式感到困惑吗?
答案 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.com
到mysite.com:8080
通过这些方式,nodejs和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