2011-06-25 69 views
7

我有一個PHP應用程序通過端口80上的apache服務。我有一個nodejs應用程序在端口3000上獨立運行。我想從PHP生成的客戶端代碼向nodejs應用程序發出ajax請求。問題是相同的源策略將不允許不同的端口,並且我不能在端口80上同時運行nodejs和apache。設置apache來別名nodejs應用程序?

我最想做的是讓它們都運行在端口80上從客戶的角度來看。我怎樣才能設置Apache重新路由/別名/無論對nodejs應用程序的某些請求?

希望是有道理的。注意:不確定這是否可行,或者我是否以正確的方式開展工作 - 歡迎提出建議。

+0

負載均衡節點與Apache似乎是一個簡單的方法來創建一個瓶頸。只需使用nginx並將您的一些請求轉發到node.js(或者在node \ o /中重寫您的PHP應用程序) – Raynos

+1

[nodejs and nginx](http://stackoverflow.com/questions/5009324/node-js- nginx-and-now) – Raynos

+0

是的,我認爲你是對的。 nginx似乎是要走的路,並且很想重寫節點中的應用程序,但時間很寶貴! – Finbarr

回答

8

你可以用反向代理來做到這一點。添加mod_proxy並在vhost文件的主域下設置一個位置,以代理到本地主機上的端口3000。基本上是這樣的:

<VirtualHost *:80> 
ServerName example.com 
<Location /api> 
    ProxyPass /api http://localhost:3000/ 
    ProxyPassReverse /api http://localhost:3000/ 
</Location> 
</VirtualHost> 
+0

我與Raynos解決方案一起使用,但這也可以奏效,雖然效率不高。 – Finbarr

+1

我想添加這個http://blog.ngarua.com/?p=112 在鏈接中的配置使Apache能夠提供靜態文件和nodejs服務器來處理實際的應用程序請求。 – memical

+2

我收到錯誤:ProxyPass | ProxyPassMatch在位置中定義時不能有路徑。當應用以上! – moderns