簡體   English   中英

子文件夾或AWS中帶有Node.js應用程序的Heroku PHP應用程序

[英]Heroku PHP app with Node.js app in subfolder, or AWS

如何配置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應用程序將是以下Web代理: 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服務器正在偵聽的端口。

但是,我讀過有關該解決方案的評論。 例如 :“此解決方案遠非最佳選擇。通過Apache發出的每個請求都將導致Apache線程等待/阻塞,直到從Node.js進程返回響應為止。”

iaincollins建議使用“ HA代理或Varnish將不同的路徑傳遞到不同的服務器”。 我想知道這是否更好,那么對於AWS或Heroku而言,最好的解決方案可能是使用CloudFront路徑模式將不同的路徑定向到不同的來源。

這聽起來是更好的解決方案嗎?

此外,關於ElasticBeanstalk,這是否真的只是包括EC2在內的幾種服務的打包,那么是否不可以在ElasticBeanstalk EC2實例上安裝Node.js服務器? 我可以為PHP和Node.js使用單獨的EC2實例,但這會更昂貴,至少目前是在我僅使用1個實例的情況下。

我什至不知道你怎么會在Heroku上做到這一點,如果有的話。 在AWS上,您可以在EC2服務器上設置Apache。 將Apache配置為在特定路徑上服務您的PHP應用程序,並在其他URL路徑上代理對NodeJS應用程序的請求。

編輯以回答評論中的問題:

  1. 您將無法在一個Elastic Beanstalk環境中部署兩個應用程序(PHP和Node)。
  2. 將NodeJS應用程序代碼存儲在Apache公用文件夾中絕對是安全問題。 另外,您無論如何也無法提供NodeJS應用程序。 您可以將NodeJS作為單獨的服務器運行在單獨的端口上,安裝在單獨的目錄中,甚至安裝在完全不同的服務器上。
  3. 這確實不是AWS的特定問題。 無需局限於AWS教程。 只需在Google上搜索“ NodeJS Apache Proxy”之類的內容,就會發現大量的教程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM