HTTP和nodeJS在不同的服务器上

时间:2016-01-15 17:47:12

标签: php node.js apache

我有两个网站:

1)httpwebsite.com我在哪里运行使用APACHE,PHP和MYSQL的Web应用程序;

2)wss.com运行nodeJS websocket服务器,用于多人游戏;

我想在httpwebsite.com上托管与websocket服务器通信的javascript客户端文件,所以我不必在nodeJS上配置http服务器,原因很多,比如安全性和缺乏使用nodeJS的经验作为HTTP服务器。

出于性能和灵活性等原因,我想将nodeJS仅用于websocket服务器。

我听说Same-origin策略限制了httpwebsite.com与wss.com之间的通信,但是可以将其重新配置为实际允许两个不同域之间的通信,这些域之间是故意相互通信的吗?

除了在nodeJS服务器上实际运行HTTP服务器之外,我还有其他选择吗?

2 个答案:

答案 0 :(得分:1)

您可以将CORS用于从一个域到另一个域的安全请求。

http://www.html5rocks.com/en/tutorials/cors/

答案 1 :(得分:0)

2个选项:

  1. 您可以将CORS标头添加到wss.com,以允许访问website.com以加载它的资源。 Matt给出的链接应该解释这是如何工作的,你只需要将这个HTTP Header添加到你需要访问的每个Node服务器上。

  2. 您可以通过Apache服务器将请求代理到节点服务器。因此,Web浏览器认为它与同一来源的服务进行通信。这通常只用于让您的Web服务器公开可用,并且您的应用服务器(运行节点)不能直接在防火墙后面提供和保护 - 尽管Apache显然需要能够访问它。

  3. 您可以在Apache中使用此配置来实现选项2,以便将http://website.com/api呼叫转发到在端口3000上运行在wss.com上的服务。

    #send all /api requests to node
    ProxyPass /api http://wss.com:3000
    #Optionally change all references to wss.com to this domain on return:
    ProxyPassReverse /api http://wss.com:3000