使用Meteor Up、SSL和NGINX将Meteor部署到生产环境中

使用Meteor Up、SSL和NGINX将Meteor部署到生产环境中,nginx,meteor,meteor-up,Nginx,Meteor,Meteor Up,我很难使用meteor up和https以及NGINX作为代理将我的meteor应用程序(“下面的myApp”)部署到生产环境中。特别是,我认为我在配置正确的端口和/或路径时遇到了问题 部署在大多数方面都起了作用。它运行在一个带有mongohq(现在是compose.io)数据库的数字海洋液滴上。我的mup setup,mup reconfig(现在在我的mup.json文件上多次运行)和mup deploy命令以及meteor up都报告没有错误。如果我在digital ocean上ssh到我

我很难使用meteor up和https以及NGINX作为代理将我的meteor应用程序(“下面的myApp”)部署到生产环境中。特别是,我认为我在配置正确的端口和/或路径时遇到了问题

部署在大多数方面都起了作用。它运行在一个带有mongohq(现在是compose.io)数据库的数字海洋液滴上。我的
mup setup
mup reconfig
(现在在我的mup.json文件上多次运行)和
mup deploy
命令以及meteor up都报告没有错误。如果我在digital ocean上ssh到我的ubuntu环境并运行myApp状态,它会报告myApp启动/运行,进程10049,当我检查我的mongohq数据库时,我可以看到myApp的预期集合已创建和种子。基于此,我认为该应用程序运行正常

我的问题是,我无法在访问站点时找到它,并且没有使用NGINX服务器的经验,我无法判断我是否在做一些非常基本的错误设置端口和转发

我在下面复制了我的NGINX配置文件和mup.json文件的相关部分

我在下面的设置中预期的行为是,如果我的meteor应用程序侦听mup.json中的端口3000,那么当我访问该站点时,该应用程序应该会出现。事实上,如果我将mup.json的env.PORT设置为3000,当访问站点时,我的浏览器会告诉我存在重定向循环。如果我将mup的env.PORT更改为80,或者完全不使用env.PORT,我会收到一条
502坏网关
消息-这部分是意料之中的,因为myApp应该在localhost:3000上侦听,我不希望在其他任何地方找到任何内容

非常感谢您的帮助

MUP.JSON(在相关部分中,如果需要显示更多信息,请使用lmk) NGINX
还请注意,SSL证书已配置且工作正常,因此我认为这与端口、路径和转发的配置有关。我不知道重定向循环是从哪里来的。

对于将来遇到这种情况的任何人,我可以通过从我捆绑的meteor应用程序中删除
强制ssl
包来解决问题。显然,强制ssl和NGINX代理要么是冗余的,要么如果一起使用会导致太多重定向。在我能够找到的资料中没有很好地记录这一点


如果有一个配置支持使用forcessl和一个代理来达到某种目的,并且比完全删除包更好,请发布,因为我想知道。谢谢

我相信只要将X-Forward-Proto头添加到Nginx配置中,就可以保留force ssl包

例如:

 proxy_set_header X-Forward-Proto https;
此外,请确保您也设置了X-Forward-For,尽管您发布的示例中已经设置了X-Forward-For


我在NGinx代理后面运行meteor。在安装force ssl后,我遇到了重定向太多的错误

如何删除强制ssl,然后在我的nginx配置中将以下行添加到我的位置:

proxy_set_header X-Forward-Proto https;
proxy_set_header X-Nginx-Proxy true;

现在工作得很好。

正如的文档所述,您必须将
x-forwarded-proto
头设置为https:

因此,nginx配置中的位置字段如下所示:

location / {
          #your own config...
          proxy_set_header X-Forwarded-Proto https;
  }

它不应该是“根URL”:https://myApp.com“?位置设置看起来没问题-我有相同的设置(除了设置X-Forward)。因此,如果您删除
强制ssl
什么用于阻止用户在
http://
访问您的站点?它将从http重定向到https-请参阅上面nginx配置中的行,其中的内容为“重写^https://$server\u name$request\u uri”?永久的问题是,在OP的配置中,nginx代理
http://localhost:3000
它试图通过重定向到
https://myapp.com
然后代理到
http://localhost:3000
哪个尝试强制ssl等。如何删除强制ssl?如果没有,您的配置将不起作用。
proxy_set_header X-Forward-Proto https;
proxy_set_header X-Nginx-Proxy true;
location / {
          #your own config...
          proxy_set_header X-Forwarded-Proto https;
  }