【问题标题】:How can I redirect to static javascript app from subfolder in a Node.js app on Heroku?如何从 Heroku 上的 Node.js 应用程序中的子文件夹重定向到静态 javascript 应用程序?
【发布时间】:2018-04-30 11:00:56
【问题描述】:

我有一个内置在 React 中的静态 javascript 应用程序,已部署到 firebase,并位于 example.firebaseapp.com

我还有一个 Node 应用程序,它在 www.example.com 上为我的主应用程序提供服务,并托管在 Heroku 上。

我想弄清楚的是,当访问给定的子文件夹时,如何让用户访问我的静态 javascript 应用程序,例如www.example.com/app?

另外,有没有一种方法可以让我不必处理 CORS 问题,因为它们基本上会存在于同一个域中?

【问题讨论】:

  • 不,这有点不同。我正在尝试为来自完全不同域的应用程序提供服务,但我不确定如何提供来自该应用程序的内容。我已经阅读了一些关于使用反向代理的不同内容,但我不确定这是否是最好的方法。
  • 啊,抱歉,知道了。我错过了不同的领域方面。您可能需要考虑将静态应用程序移至 Heroku。我怀疑这比从 Heroku 代理/缓存 Firebase 应用程序更简单、性能更高(尤其是在静态应用程序更新期间)和更容错,反之亦然。我知道这不是你问的,但从长远来看,它可以简化事情。
  • 是的,谢谢你的建议。我使用 Firebase 的原因是因为它允许我快速/轻松地将已编译的静态资产(html、css、js、图像)部署到公共 URL,而无需集成到另一个 Node 应用程序中,然后将其部署到另一个heroku实例。也许我在想这个错误。好名字顺便说一句:)
  • Will 读起来令人困惑 :) Will 提供了很好的建议。如果没有反向代理来服务来自example.com 域的请求并将它们传递给firebaseapp.com,则没有任何方法可以实现此目的。为了提高性能,反向代理可以缓存它代表客户端获取的内容,但我觉得这比保证的复杂性要高。或者,我们可以将 CNAME 记录分配给映射到 Firebase 的子域 app.example.com

标签: javascript node.js .htaccess firebase heroku


【解决方案1】:

在服务于主应用程序的服务器上使用 nginx。通过这种方式,您不会遇到 cors 问题,用户也不会觉得他在不同的域上提供服务。

你可以从这个 nginx 配置开始:

location / {
  proxy_set_header   X-Real-IP $remote_addr;
  proxy_set_header   Host      $http_host;
  proxy_pass         http://YOURTOMCATSERVER:{PORT};
}

location /blog {
  proxy_set_header   X-Real-IP $remote_addr;
  proxy_set_header   Host      $http_host;
  proxy_pass         http://YOURBLOGSERVER:{PORT};
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2017-04-17
    • 2020-08-17
    • 2014-12-07
    • 2017-04-26
    相关资源
    最近更新 更多