Meteor.js部署到“example.com”还是“www.example.com”?

29

我最近使用以下命令部署了一个Meteor应用:

$ meteor deploy example.com

后来(认为它是同样的东西)使用以下内容:

$ meteor deploy www.example.com

最终它提供了两个不同版本的应用程序,一个托管在example.com,另一个托管在www.example.com

我能还原其中一个部署吗?我应该还原哪一个?

如果不能,我应该在我的域名提供商上设置什么样的配置?

4个回答

41

当用户访问您的页面时,您希望他们看到 mydomain.example 还是 www.mydomain.example

如果是 mydomain.example,则需要在 DNS 区域文件中为该域名设置一个指向 origin.meteor.com IP地址的 A 记录。

如果是 www.mydomain.example,则需要在 DNS 区域文件中为子域名 "www" 设置一个指向 origin.meteor.comCNAME 记录。

然后,您需要从这两个选择中的一个设置“域名转发”。例如,我已经将 http://playlistparty.net 转发到 http://www.playlistparty.net

完成上述步骤后,只需运行:

meteor deploy www.playlistparty.net
您可以使用 --delete 选项删除您不需要的部署。
meteor deploy www.playlistparty.net --delete

谢谢travellingprog,这就是现在正确的做法!它正在工作 :) - jdscosta91
3
如果您正在使用Godaddy的控制面板,操作步骤如下:进入"域名管理器",点击下拉菜单中的“转发”,选择“域名转发”。输入您的域名“xxx.com”,然后将其转发到“www.xxx.com”。 接着进入DNS管理器。由于您进行了转发操作,所以顶部的“@”并不重要,这里可以填写任何IP地址。 修改默认指向“@”的“www”条目,将其修改为“origin.meteor.com”。 - kenyee
4
这并没有帮助 www.example.com 指向 example.com。它仍然显示 Meteor 网站已经关闭。 - Prashant

12

自定义域名部署

将Meteor部署到您的域名:

meteor deploy mydomain.com

为*.mydomain.com或www.mydomain.com(如果您只想设置www子域)和mydomain.com设置您的CNAME记录:origin.meteor.com

或者

将*.mydomain.com和mydomain.com的'A'记录指向:107.22.210.133.

要删除您可能意外输入的现有记录:

meteor deploy www.mydomain.com --delete

1
感谢您的简短回答。所以,我已经部署到了mydomain.com,我的域名提供商配置如下:(mydomain.com - A记录 - IP); (*.mydomain.com - CNAME - mydomain.com);现在,如果我尝试打开例如“www.mydomain.com”或“somestuff.mydomain.com”,它会显示Meteor的页面“此地址没有部署站点”。 - jdscosta91
我已经按照这些说明进行了操作。甚至尝试了将www更改为origin.meteor.com,但仍然得到了相同的错误。这是截图(http://i.imgur.com/AQiwGWp.png)。我是否做错了什么? - Prashant
@Prashant看起来没问题。编辑CNAME,将它们更改为指向secureserver.net而不是origin.meteor.com(我假设这是一个占位符?)。然后只需使用meteor deploy secureserver.net即可。A记录是主要记录,而CNAME则将www重定向到主域名。 - Tarang
secureserver.net 还是到我的域名? - Prashant
这些都是默认设置。所以,为了澄清,www 将指向 mydomain.org,然后 meteor deploy mydomain.org 对吗?我也尝试过了。但无法将 www.mydomain.org 重定向到 mydomain.org - Prashant
显示剩余6条评论

8
如果您想要将www重定向到非www,可以使用以下方法。您也可以稍微修改代码来实现相反的操作。
只需设置:
@ (CNAME) : origin.meteor.comm
www (CNAME) : origin.meteor.com

然后,部署您的主应用程序(不带www)。
meteor deploy yourapp.example

现在,使用以下命令创建一个名为“redirect”的新Meteor应用程序:
meteor create redirect
cd redirect

将生成的js文件内容设置为以下内容:

if (Meteor.isClient) {
  var url = document.URL;
  url = url.replace("www.", "");
  window.location.href = url;
}

然后部署你的重定向应用程序(带有www)

meteor deploy www.yourapp.example

你做的是,在你的域名的www和非www上部署了两个不同的应用程序。所有在www上的Meteor应用程序都仅将您重定向到非www域名。它还会将www.yourapp.example/some/path 重定向到 yourapp.example/some/path

这是我在任何地方找到的最好的答案!虽然有点hacky。我希望Meteor的某个人已经把这个问题列入了他们的待办事项清单。 - Thomas Ingalls
我想要一个服务器端版本的这个程序,它可以适用于任何主机名(始终将www重定向到非www地址),同时保留任何通配符路径。可能不是完美的,但我已经在这里发布了一个项目:https://github.com/bobbigmac/redirect-server - Bob Davies
这样做会不必要地占用 Meteor 服务器资源。更好的解决方案是将裸域名的 A 记录指向 www,将 www 的 CNAME 指向 origin.meteor.com,正如其他答案中所建议的那样。 - Dheeraj Bhaskar

4

我在这方面做了很多谷歌搜索,所以我将分享最终对我有用的内容。我要求所有查询都转到我的站点的HTTPS和www版本。仅设置CNAME实际上并没有更改为重定向到www版本。我正在Modulus上托管,并最终执行以下操作:

  1. 强制使用HTTPS

    • Modulus有HTTPS重定向,否则我之前在未托管于Modulus的应用程序中成功使用Force-SSL包和NGINX来完成此操作。
  2. 将域名指向托管IP

    • 设置您的域名example.com的A记录以指向我们的托管IP。
    • 设置我的CNAME子域'www'指向相同的IP。
  3. 强制使用www


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接