如何配置Heroku或AWS,以便我在子文件夹中运行带有Node.js应用程序的PHP应用程序?
我想实现这个目标:
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:&#34;这个解决方案远非最优。通过Apache进入的每个请求都会导致Apache线程等待/阻塞,直到从Node.js进程返回响应为止。&#34;
iaincollins建议使用&#34; HA Proxy或Varnish将不同的路径传递到不同的服务器&#34;。我想知道这是否确实更好,那么AWS或Heroku的最佳解决方案可能是使用CloudFront Path Pattern来指导不同来源的不同路径。
这听起来像是一个更好的解决方案吗?
关于ElasticBeanstalk,这不仅仅是包括EC2在内的多个服务的包,所以不应该在ElasticBeanstalk EC2实例上安装Node.js服务器吗?我可以为PHP和Node.js使用单独的EC2实例,但这会更昂贵,至少目前我只使用1个实例。
答案 0 :(得分:0)
我不知道你如何在Heroku上做到这一点,如果有可能的话。在AWS上,您可以在EC2服务器上设置Apache。 Apache将被配置为在特定路径上为您的PHP应用程序提供服务,并将请求代理到其他URL路径上的NodeJS应用程序。
编辑以回答评论中的问题: