【问题标题】:Heroku PHP app with Node.js app in subfolder, or AWSHeroku PHP 应用程序和子文件夹中的 Node.js 应用程序,或 AWS
【发布时间】:2015-12-19 07:48:54
【问题描述】:

如何配置 Heroku 或 AWS,以便我有一个 PHP 应用程序和一个在子文件夹中运行的 Node.js 应用程序?

我想实现这个:

web/app.php       <-- PHP entry point (Symfony front controller)
web/proxy/        <-- Node.js entry point
app.js            <-- Node.js app

我的 Node.js 应用程序将是这个网络代理:https://github.com/nfriedly/node-unblocker

我已经尝试过这个 Heroku buildpack https://github.com/dzuelke/heroku-multipack-nodejs-php-example 但这似乎只是使用 Node.js 来安装 Bower 依赖项,而不是创建 Node.js 服务器。

我想要的设置是可能的还是有更好的解决方案?我需要 PHP 应用程序和 Node.js Web 代理在同一个域上运行。

更新

感谢@mbaird 的建议,我现在开始更多地了解这一点,经过更多谷歌搜索后,我设法使用 Apache 代理在本地工作,如下所示:

<Location "/proxy">
    ProxyPass http://localhost:8080/proxy
    ProxyPassReverse http://localhost:8080/proxy
</Location>

端口 8080 是我的本地 Node.js 服务器正在侦听的位置。

但是,我阅读了有关此解决方案的混合评论。 For example:“这个解决方案远非最佳。通过 Apache 传入的每个请求都会导致 Apache 线程等待/阻塞,直到从 Node.js 进程返回响应。”

iaincollins 建议使用“HA Proxy 或 Varnish 将不同的路径传递到不同的服务器”。我想知道这是否确实更好,那么对于 AWS 或 Heroku 来说,最好的解决方案可能是使用 CloudFrontPath Pattern 将不同的路径指向不同的来源。

这听起来像是更好的解决方案吗?

同样关于 ElasticBeanstalk,这不只是一个包含 EC2 在内的多个服务的包,所以不应该在 ElasticBeanstalk EC2 实例上安装 Node.js 服务器吗?我可以为 PHP 和 Node.js 使用单独的 EC2 实例,但这会更昂贵,至少目前我只使用 1 个实例。

【问题讨论】:

  • 请不要在您当前的问题中添加全新的问题。您应该将这些作为新问题发布在本网站上。

标签: php node.js amazon-web-services heroku


【解决方案1】:

我不知道你会如何在 Heroku 上做到这一点,如果它甚至可能在那里的话。在 AWS 上,您可以在 EC2 服务器上设置 Apache。 Apache 将被配置为在某个路径上为您的 PHP 应用程序提供服务,并在其他 URL 路径上代理对 NodeJS 应用程序的请求。

编辑以回答 cmets 中的问题:

  1. 您将无法在一个 Elastic Beanstalk 环境中部署两个应用程序(PHP 和 Node)。
  2. 将 NodeJS 应用程序代码存储在 Apache 公共文件夹中绝对是一个安全问题。此外,无论如何,您不能以这种方式为 NodeJS 应用程序提供服务。您可以在单独的端口上将 NodeJS 作为单独的服务器运行,安装在单独的目录中,甚至在完全不同的服务器上。
  3. 这确实不是 AWS 特定的问题。无需将自己限制在 AWS 教程中。只需在 Google 上搜索“NodeJS Apache Proxy”之类的内容,您就会找到大量教程。

【讨论】:

  • 感谢您的回答。您能否发布一个链接,以更详细地了解如何在 AWS 上以这种方式配置 Apache?将 Node.js app.js 文件放在 PHP/Apache 公用文件夹 (/web) 或子文件夹中是否也存在安全风险?顺便说一句,我已经将 AWS 与 Elastic Beanstalk 一起用于 PHP。我可以继续使用 EB 还是必须放弃它?
  • 再次感谢您为我指明了正确的方向。我用我的发现和几个问题更新了我的问题
猜你喜欢
  • 2018-04-30
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
相关资源
最近更新 更多