【发布时间】: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 来说,最好的解决方案可能是使用 CloudFront 的 Path Pattern 将不同的路径指向不同的来源。
这听起来像是更好的解决方案吗?
同样关于 ElasticBeanstalk,这不只是一个包含 EC2 在内的多个服务的包,所以不应该在 ElasticBeanstalk EC2 实例上安装 Node.js 服务器吗?我可以为 PHP 和 Node.js 使用单独的 EC2 实例,但这会更昂贵,至少目前我只使用 1 个实例。
【问题讨论】:
-
请不要在您当前的问题中添加全新的问题。您应该将这些作为新问题发布在本网站上。
标签: php node.js amazon-web-services heroku