簡體   English   中英

Node.js通過Amazon EC2上的Apache進行代理

[英]Node.js proxy through Apache on Amazon EC2

我正在嘗試在我的EC2實例上為我的Node.js服務器設置代理,所以我可以通過http://*.amazonaws.com/node訪問它,其中*是URI的其余部分。 我通過使用以下命令編輯/etc/httpd/conf/httpd.conf設置代理:

<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>
ProxyPass /node http://*.amazonaws.com:3000
ProxyPassReverse /node http://*.amazonaws.com:3000

我的Node.js server.js文件如下所示:

var port = process.env.PORT || 3000;
var host = '*.amazonaws.com' || process.env.HOST || '127.0.0.1';

因此,當我啟動並運行所有內容時,我可以訪問/ node ,但是,Node.js的/ public目錄沒有被用作Document的根目錄,所以我得到任何文件index.html包含404s因為它假設它在/ public目錄。 例如,Firebug報告了一個404的http://*.amazonaws.com/javascripts/rails.js和另外3個文件,這意味着它沒有訪問Node.js的/ public目錄。

值得注意的是,如果我編輯index.html文件中的路徑,一切正常,但我寧願不必這樣做......如果我在httpd.conf中取出ProxyPass配置,只需訪問節點來自http://*.amazonaws.com:3000服務器,它可以工作......但理想情況下,我不想這樣做並能夠做/節點

我想知道的是,我的代理配置是否正確,如果沒有,我該如何修復它,以便當我訪問/ node時 ,所有請求的文件都會被自己重定向?

我同意評論者的意見,如果你使用快速靜態中間件,你可能會錯誤配置快遞。

但是,如果您希望apache處理靜態請求,則這是用於生成ProxyPass異常的apache配置語法:

ProxyPass /javascript/ !

您還需要確保設置了DocumentRoot ,但是這應該通過任何對javascript目錄的請求傳遞給常規apache,它將以您配置的任何方式處理對該目錄的請求。

暫無
暫無

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

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