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

2024-03-17

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

该部署在大多数方面都发挥了作用。它在带有 mongohq(现在的 compose.io)数据库的数字海洋水滴上运行。我的mup setup, mup reconfig(现在在我的 mup.json 文件上运行多次)并且mup deploy使用meteor-up的命令都没有报告错误。如果我 ssh 进入数字海洋上的 ubuntu 环境并运行status myApp它报道myApp start/running, process 10049,当我检查我的 mongohq 数据库时,我可以看到 myApp 的预期集合已创建并播种。我认为在此基础上该应用程序运行正常。

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

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

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

非常感谢所有帮助。

MUP.JSON(在相关部分,如果需要显示更多内容,lmk)

"env": {
  "PORT": 3000,
  "NODE_ENV": "production",
  "ROOT_URL": "http://myApp.com",
  "MONGO_URL": // working ok, not reproduced here,
  "MONGO_OPLOG_URL": // working ok I think,
  "MAIL_URL": // working ok
}

NGINX

server_tokens off;

# according to a digital ocean guide i followed here, https://www.digitalocean.com/community/tutorials/how-to-deploy-a-meteor-js-application-on-ubuntu-14-04-with-nginx, this section is needed to proxy web-socket connections

map $http_upgrade $connection_upgrade {
      default upgrade;
      ''      close;
}

# HTTP

server {
      listen 80 default_server;
      listen [::]:80 default_server ipv6only=on;
      server_name myApp.com;
      # redirect non-SSL to SSL
      location / {
              rewrite ^ https://$server_name$request_uri? permanent;
      }
}

# HTTPS

server {
      listen 443 ssl spdy;

      # this domain must match Common Name (CN) in the SSL certificate

      server_name myApp.com;

      root html;
      index index.html index.htm;

      ssl_certificate /etc/nginx/ssl/tempcert.crt;
      ssl_certificate_key /etc/nginx/ssl/tempcert.key;

      ssl_stapling on;
      ssl_session_cache shared:SSL:10m;
      ssl_session_timeout 5m;

      ssl_prefer_server_ciphers on;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers 'long string I didn't reproduce here'

      add_header Strict-Transport-Security "max-age=31536000;";

      location / {
              proxy_pass http://localhost:3000;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
      }
}

另请注意,SSL 证书已配置且工作正常,因此我认为这与端口、路径和转发的配置方式有关。我不知道重定向循环来自哪里。


对于将来遇到此问题的任何人,我都可以通过删除来解决问题force-ssl来自我捆绑的流星应用程序的包。显然,force-ssl 和 NGINX 代理要么是多余的,要么一起使用可能会导致太多重定向。我找到的材料中并没有详细记录这一点。

如果有一个配置支持将force-ssl 与代理一起使用以达到某种目的,并且比完全删除包更可取,请发布,因为我有兴趣知道。谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Meteor-Up、SSL 和 NGINX 将 Meteor 部署到生产环境 的相关文章

  • 在“git pull”我的 Django 项目后重新启动/重新加载 Gunicorn(通过 Upstart)的更好方法

    我正在寻找比sudo restart projectname每次我发出git pull origin master 它会下载我对 Django 项目的最新更改 这restart我相信该命令与 Upstart 有关 我用它来启动 停止我的 G
  • NGINX 与 Tomcat 配置

    我是 Nginx 新手 我需要你的帮助 根据很多论坛我了解到我们所有的静态页面都存储在Nginx中 当有请求到来时 我必须将该请求传递给 tomcat 获取数据 并在 tomcat 生成响应后生成响应 目前 我刚刚做到了 我将请求直接传递给
  • 重新渲染模板时的 Meteor 回调

    我目前有一个模板 其中包含 each 在其中循环 我正在尝试找到一种方法来触发特定功能 each 循环已完成 Template rendered仅在第一次渲染模板时运行 因此不幸的是 这不起作用 有什么可以做到这一点吗 我就是这样做的 Te
  • 当请求太大时,Nginx(我认为)会以错误的权限保存文件

    所以 我对托管和 Linux 等都是完全陌生的 所以如果我说错了 请原谅我 我还在学习 我正在使用 Django 创建一个小型个人网站 我想把它放到网上看看是否一切正常 我从 linode 买了一台便宜的服务器 并使用 Digital Oc
  • 如何更新我的流星项目中的 cordova-plugin-device ?

    当我运行流星项目时 我收到此警告 警告 尝试安装插件 电子邮件受保护 cdn cgi l email protection 但 它的最低版本应为 1 1 1 以确保与 当前平台版本 安装最小 版本以方便起见 但您应该调整您的依赖项 然后 我
  • Nginx反向代理返回404

    我的 Nginx 安装并运行 下面是配置 etc nginx nginx conf 我要全部转发 api 到我的 tomcat 服务器 该服务器在同一服务器上的端口 9100 上运行 类型http myhost 9100 api apps有
  • 如何在位置中使用 Nginx Regexp

    Web 项目将静态内容放入 some content img 文件夹中 url规则为 img some md5 但文件夹中的位置 content img 前两位数字 Example url example com img fe5afe048
  • nodejs googleapis,authClient.request 不是函数

    我正在像这样的一个函数中创建一个 oauth2client 并返回它 实际上 我确实传递了客户端 ID 秘密 重定向 URL 和凭据 据我检查 这些都是正确的 var OAuth2 google auth OAuth2 var oauth2
  • 如何在 Meteor 中读取依赖于另一个集合的集合

    我正在尝试从集合中加载最新的帖子 同时加载同一篇帖子的所有评论 该集合具有引用 而不是将整个文档存储在彼此内部 Post title body etc Comment postId body etc 我使用iron router作为路由包
  • 如何使用 Meteor Spacebars 模板动态渲染 HTML?

    假设我正在存储 div name div and div age div 在我的数据库中 然后我想获取第一个 HTML 字符串并将其呈现在模板中 gt template1 它只渲染第一个字符串 name 车把在里面 然后我想给出新生成的模板
  • Accounts.onCreateUser 在创建新用户时添加额外属性,好的做法吗?

    我正在创建新用户Accounts createUser http docs meteor com full accounts createuser如果你不做任何花哨的事情 它就会正常工作 但我想向新用户添加一些文档中未列出的其他字段 这是我
  • nginx 反向代理到 apache-wordpress 可以工作,但到外部 url 的 proxy_pass 失败

    我有一个针对 apache wordpress 的 nginx 反向代理设置 效果很好 但是 根据位置需要重定向到失败的外部 url 请检查以下配置 这是一个有效的设置吗 https platform com https platform
  • 将应用程序级别用户名/用户 ID 注入 nginx/Apache 日志

    有没有办法将应用程序级别的用户名或 id 在本例中为 django 用户名或 id 注入 Apache 或 ngnix 日志中 请注意 我不是询问 HTTP 身份验证用户名 我目前正在使用一个简短的自定义中间件将此数据添加到响应标头 如下所
  • 将代码从 htaccess 重写为 nginx 配置?

    我在将 htaccess 文件中的重写代码实现到 nginx 配置中时遇到问题 我已经尝试过生成器 http winnginx com htaccess http winginx com htaccess用于生成我的重写 代码 我的ngin
  • 使用 JQueryUI Autocomplete 和 Meteor 的规范方法

    使用 Meteor 我想了解使用 JQuery UI 自动完成处理大量服务器端数据的最有效方法 我有两个工作提案 想听听关于差异的意见 以及是否有更好的方法来做同样的事情 使用发布 订阅 Server Meteor publish auto
  • nginx位置正则表达式,匹配多次

    如何在 nginx 位置正则表达式中多次匹配 看来 x x 语法永远不起作用 例如 location abc w 1 3 从来不工作 您必须引用包含以下内容的位置 or 人物 location abc w 1 3 否则 nginx 将其解析
  • Meteor 抛出 throwIfSelectorIsNotId 异常

    运行某些代码时 Meteor 会抛出 throwIfSelectorIsNotId 异常 我有两个客户端运行相同的代码 当第二个客户端运行相同的代码时会引发异常 无法弄清楚这个异常的含义以及抛出的原因 希望有人能够解释一下 对于客户端上的某
  • Beanstalk 部署忽略 .ebextensions 中的 nginx 配置文件

    我在单实例 Elastic Beanstalk 环境中托管 Java Web 应用程序 并添加了几个 ebextension 文件 这些文件在每次部署时成功为我创建配置文件 然而 我无法找到一种方法让 Beanstalk 在 etc ngi
  • NGINX 上的 SSL 终止

    我已经购买了 SSL 证书 并在验证模数时正确地将其捆绑在一起 即https kb wisc edu middleware 4064 https kb wisc edu middleware 4064 那么哈希值是相同的 我已将证书和密钥移
  • Mongo按动态字段排序

    所以我传入了一个动态变量 它是我想要排序的字段的名称 假设下面的 sortVariable 可能等于 price createdAt name 等 这不起作用 我该怎么做 function findStuff sortVariable va

随机推荐

  • Win10 64位上CUDA 12的PyTorch安装

    我需要在我的 PC 上安装 PyTorch 其 CUDA 版本 12 0 pytorch 2 的表 https i stack imgur com X13oS png in In 火炬网站 https pytorch org get sta
  • 命令源禁用和启用

    我阅读了有关 WPF 命令的所有内容 并且了解 GoF 命令模式 但仍然认为 我对这个过程有一个问题 命令目标 例如文本框 如何告诉命令源 例如按钮 它有更改状态 例如 插入文本框中的某些文本 以便源可以禁用或启用自身或执行其希望执行的任何
  • 使用 Java 和观察者模式使用 Jersey 的 RESTful Web 服务

    我正在尝试为学校项目实现一个 n 层架构应用程序 客户端和服务器之间的通信是通过 RESTful Web 服务完成的 我用了Jersey来实现这一点Java 我唯一的问题是 如何register服务器上的客户端接收更改通知 就像通常使用观察
  • Ruby on Rails:=> 符号是什么意思?

    我正在努力学习 Head First Rails 并且我不断看到 gt 它在路线中 map connect marmots new controller gt marmots action gt new 它在渲染部分 render part
  • 使用 pygame 单击按钮时启动事件

    大家好 我是 pygame 的新手 我开发了一个简单的游戏 其中球相互弹跳 效果很好 我添加了一个带有按钮的用户界面 其中包含以下选项new game loadgame options 我需要的是 当用户点击new game button他
  • 记录类型(或数组)的前向声明

    我想在XE5中这样做 type TMyRec record fields class function GetList TMyRecArr static end TMyRecArr array of TMyRec 我已经看过了 记录类型的前
  • Docker windows 加载内核模块

    我正在 Windows 上运行 Docker 在 MacOSX 上可以观察到下面描述的类似效果 我有一个 Docker 容器 其中有一个程序尝试访问 squashfs 映像 要访问squashfs 内核必须静态地遵守loopdevice支持
  • 如何循环VelocityContext中的所有变量?

    在我的 Velocity 模板 vm 文件 中 如何循环遍历中存在的所有变量或属性VelocityContext 参考下面的代码 我希望模板能够写入上下文中传递的所有水果的名称和数量 Map
  • 为什么 jquery 表单验证不起作用?

    我有一个在单击事件后在对话框内打开的表单 我想知道我的 jquery 中是否存在我没 有注意到的语法问题 提交处理函数中没有任何日志正在记录 HTML div title Thanks For Volunteering div
  • IronPython 脚本调试

    我有一个 NET 应用程序 并且有一个 IronPython 脚本选项卡页 脚本工作正常 但我强烈希望能够调试它们 就在应用程序中并切换断点 这个问题有什么解决办法吗 您可以找到 IronPython 调试器here https githu
  • jar 内出现 NoClassDefFoundError

    我有一个类位于名为 com toptur sysTray 的包中 它所做的只是加载系统托盘 它不使用任何外部包 我创建一个 SysTray 对象来安装系统托盘 一切都构建得很好 我可以从命令行运行该应用程序并安装系统托盘 但是当我尝试从类文
  • 仅 iOS 7 崩溃 [NSNull intValue]:无法识别的选择器发送到实例

    我想从 JSON 服务获取数据 仅 iOS 7 版本在从 JSON 值获取数据时崩溃 它从下面的 JSON 服务返回 voteAverageRating 0 voteCount 0 My code int voteCount listDic
  • 无法找到 org.gradle.api.plugins.quality.internal.findbugs.FindBugsXmlReportImpl 类型的报告 xml 上的参数的方法目标()

    将 android studio 版本更新到 3 4 0 后 我将 Gradle 版本更新到 5 1 1 并尝试重建项目 但它在quality gradle 文件中抛出异常 Task failed with an exception Whe
  • 如何为 Google 地图 V3 中的所有标记创建一个事件处理程序?

    据我所知 如果地图上有多个标记 并且需要处理它们的点击 则必须为每个标记设置一个处理程序 如下所示 var marker new google maps Marker position new google maps LatLng 55 3
  • tableView:viewForHeaderInSection: 默认值?

    我想要一个自定义节标题 其余部分是默认标题 UIView tableView UITableView tableView viewForHeaderInSection NSInteger section return 我应该返回什么才能提供
  • 将具有重复键的元组列表转换为列表字典

    我有一个协会list使用重复键 l 1 2 2 3 1 3 2 4 我想要一个dict with list values d 1 2 3 2 3 4 我可以做得更好吗 for x y in l try z d x except KeyErr
  • Adobe Stratus 的缺点

    我想知道使用 Adob e Stratus 是否有任何缺点 既然只是P2P 那么什么时候会出现P2P不能使用的情况呢 网站上说的是 UDP 数据包被阻止时之类的内容 多久一次 假设有 1000 人使用该服务 大约有多少人无法使用该服务 另外
  • ModelBinder没有被调用

    Per 我之前的问题 https stackoverflow com questions 5228144 bind action 1 2 3 to listint 我实现了一个模型绑定器来映射 api v1 widgets 1 2 3 to
  • System.Web.Mvc.ActionFilterAttribute 与 System.Web.Http.Filters.ActionFilterAttribute

    我看到 ActionFilterAttribute 类有两个版本 System Web Mvc ActionFilterAttribute and System Web Http Filters ActionFilterAttribute
  • 使用 Meteor-Up、SSL 和 NGINX 将 Meteor 部署到生产环境

    我很难使用 Meteor up 以 https 和 NGINX 作为代理将我的 Meteor 应用程序 下面的 myApp 部署到生产环境中 特别是 我认为我在配置正确的端口和 或路径时遇到问题 该部署在大多数方面都发挥了作用 它在带有 m