2012-05-28 2 views
1

포트 80에 PHP 응용 프로그램을 실행하는 Apache-Server가 있습니다. PHP 응용 프로그램은 포트 3000을 통해 NodeJS- 서버 (socket.io)와 통신합니다.Apache, NodeJS 및 socket.io : Apache 또는 NodeJS를 역방향 프록시로 사용 하시겠습니까?

방화벽 제한으로 인해 Port 80. 따라서 포트 3000 (NodeJS)으로 서버에서 내부적으로 반전되는/nodejs /와 같은 URL을 지정해야합니다.

은 (성능에 관하여) 더 나은 NodeJS가 실행하게되므로 NodeJS에 NodeJS - 데이터를 전달하는 역 - 프록시로서 아파치 (mod_proxy를)를 사용하거나 더 나은 (https://github.com/nodejitsu/node-http-proxy와 예) NodeJS에 그렇게하는 것입니다 수 있나요 포트 80을 사용하고 내부적으로 Apache 이외의 모든 NodeJS-Data를 전달합니다 (그러면 다른 포트에서 실행됩니까?).

일반적인 HTTP 요청보다 socket.io 호출이 조금 더 많습니다.

답변

2

프록시 만 필요하면 HAProxy와 같은 것을 사용해야합니다. 이는 특별히이를 위해 설계되었습니다.

각 연결마다 새로운 스레드를 포크하거나 시작해야하므로 (노드의 모든 이점을 잃어 버리기 때문에) 아파치는 프록시가 잘 작동하지 않습니다.

이상으로, 내가 최적화 할 필요가 있다면 아파치를 전혀 사용하지 않을 것입니다. NGINX는 서버로서 훨씬 뛰어납니다 (예를 들어 정적 파일을 제공하는 경우 Node.js보다 빠릅니다).

자료 :

+0

감사합니다. 나는 라우팅 테이블을 가지고 node-http-proxy를 사용했다 : 라우터 : { 'localhost': '127.0.0.1:8000', 'localhost/nodejs': '127.0.0.1 : 3000 ' } }; httpProxy.createServer (options) .listen (80);' – helix