Meteor 如何处理多个虚拟主机?
www.Some-Client-Domain.com --> www.Our-CName-URL.com --> Meteor 应用程序。
我们需要 Meteor 应用程序来服务相同的站点/应用程序,但具有特定于请求的原始 URL (Some-Client-Domain.com) 的数据。
在我们当前的原型中,NGINX 位于 Rails 之前,有几种不同的方法可以实现此目的,包括将 NGINX 连接到数据库以定义许多虚拟主机。这非常有效,因为如果有新客户端注册,我们可以更新数据库,然后 NGINX 立即知道该虚拟主机,而无需任何进一步的 NGINX 配置。
在 Meteor 中如何实现这一点?
Thanks!
好吧,如果您暂时忽略 SSL(或者想稍后自己弄清楚 SSL),那么以下指南应该有效:
基本思想
.. 是根据基本 URL 使用不同的数据库(mongo,通常情况)生成同一应用程序的多个实例。
我们将为虚拟主机使用以下设置:
-
Site #1 :
www.example1.com
- 流星端口:
3000
- MongoDB 端点/url:
mongodb://localhost:27017/example1
-
Site #2 :
www.example2.com
- 流星端口:
3001
- MongoDB 端点/url:
mongodb://localhost:27017/example2
准备meteor
实例
Install foreman
via rubygems
:
-
创建一个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/ http://ddollar.github.io/foreman/ ):
sudo foreman export --app meteors --user <meteor files owner> upstart /etc/init
准备nginx
从现在开始,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,但我将把它留在这里供其他对该解决方案感兴趣的人使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)