Meteor如何处理多个虚拟主机?
www.Some-Client-Domain.com - > www.Our-CName-URL.com - >流星app。
我们需要Meteor应用程序提供相同的站点/应用程序,但需要特定于所请求的原始URL的数据(Some-Client-Domain.com)。
在我们当前的原型中,我们在Rails前面有NGINX,并且有几种不同的方法可以做到这一点,包括将NGINX连接到数据库以获取MANY虚拟主机的定义。这非常有用,因为如果新客户注册,我们可以更新数据库,然后NGINX立即知道该虚拟主机,而无需进一步配置NGINX。
如何在Meteor中实现这一目标?
谢谢!
答案 0 :(得分:5)
好吧,如果你现在暂时忽略SSL(或者想在以后自己想出SSL),下面的指南应该有效:
..是使用不同的数据库(mongo,通常情况)生成相同应用程序的多个实例,具体取决于基本URL。
我们将对虚拟主机使用以下设置:
www.example1.com
3000
mongodb://localhost:27017/example1
www.example2.com
3001
mongodb://localhost:27017/example2
meteor
个实例通过foreman
安装rubygems
:
在meteor项目目录中创建一个foreman
Procfile
文件。使用上面的数据(不包括子弹:D):
web1: ROOT_URL=http://www.example1.com/ PORT=3000 MONGO_URL=mongodb://localhost:27017/example1 meteor
web2: ROOT_URL=http://www.example.com/ PORT=3001 MONGO_URL=mongodb://localhost:27017/example2 meteor
- 或 - 如果您使用meteor bundle
版本:
web1: ROOT_URL=http://www.example1.com/ PORT=3000 MONGO_URL=mongodb://localhost:27017/example1 node bundle/main.js
web2: ROOT_URL=http://www.example2.com/ PORT=3001 MONGO_URL=mongodb://localhost:27017/example2 node bundle/main.js
然后,您可以直接在同一目录上运行foreman start
(在末尾添加&
以发送到后台)。或者您可以通过foreman export
将其安装为服务/新手脚本(这可能因其他Linux发行版而异,请参阅Foreman文档:http://ddollar.github.io/foreman/):
sudo foreman export --app meteors --user <meteor files owner> upstart /etc/init
从现在开始,nginx的配置现在应该非常简单:
server {
listen 80;
server_name www.example1.com example1.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 80;
server_name www.example2.com example2.com;
location / {
proxy_pass http://localhost:3001;
proxy_set_header X-Real-IP $remote_addr;
}
}
让我知道这是否适合您,虽然您提到您已经使用过SilkJS,但我会将此留给其他对该解决方案感兴趣的人。