2013-11-21 6 views
0

우분투에는 ZPanel (관리되는 LAMP 스택 설치) 전용 VPS가 있습니다. 이렇게하면 도메인과 PHP 웹 사이트를 내 서버에 쉽게 추가 할 수 있으며, 각각 다른 ftp 로그인 + mysql 사용자에게 샌드 박스화할 수 있습니다.NodeJS 포트 프록시 또는 Apache 리디렉션 - 내 개발 워크 플로에서 가장 효율적입니까?

오늘 저는 일부 NodeJS 응용 프로그램을 뒤적 거리기 시작했습니다. 나는이 응용 프로그램의 속도에 정말 감명 받았고 그래서 나는 그들을 내 서버에 던질 것이라고 생각했습니다. 평소와 같이 zpanel에 새 호스팅 계정을 만든 다음 SSH 터미널에서 앱을 시작했습니다. 예상대로 NodeJS 앱이 원활하게 실행되며 기존 PHP 사이트와 마찬가지로 별도의 FTP 로그인을 통해 코드를 업데이트 할 수 있습니다. 환상적입니다.

모든 여기까지 좋은,하지만 지금은 까다로운 부분 제공 : 점점 NodeJS와 아파치가 같은 서버에서 병렬로 실행 ...

문제는 내 NodeJS 응용 프로그램이 포트 8080 (사용자 정의)에서 실행이다는 아파치는 포트 80에서 실행된다. (기본값)

예. http://domain.com/:8080 < - URL에 포트가있는 것은 분명히 사용자에게 혼란을줍니다.

은 무엇 최선의 해결책이 http://newdomain.com/뿐만 아니라 http://domain1.com/, http://domain2.com/ 또는 http://domain3.com/ 대신 포트를 사용에서 액세스 할 수있는 기존의 PHP 웹 사이트에서 & PHP 웹 사이트 액세스 할 수있는 새로운 nodejs 애플 리케이션을 가지고하는 것입니다 ? 노드 응용 프로그램을 실행하는 각 도메인에 대한 아파치에 '사이트 이용 가능한'파일 (ZPanel이 파일을 작성하지 않습니다 만들기

  1. :

    이은 내가 지금까지 함께 왔습니다 옵션입니다 기본적으로). 나는 이것이 가장 간단한 옵션이라고 추측하지만, I've read that proxying from apache to Node is a speed & performance bottleneck은 Apache가 각 요청에 대해 추가 프로세스를 생성하고 노드가 처리를 수행함에 따라 마찬가지입니다.

  2. 모든 Apache 웹 사이트를 변경하여 8080 포트에서 실행하고 Node를 80 포트에서 실행하도록 변경하십시오. 그런 다음 방문한 도메인에 따라 올바른 URL + 포트로 클라이언트를 리디렉션하는 Node (포트 80 - 기본 http 포트)를 사용하여 프록시를 실행합니다. (서버에 연결된 모든 도메인에 대해 노드 응용 프로그램을 전역으로 실행할 수 있습니까?) 이것은 시간이 많이 걸리는 옵션처럼 보이지만 성능이 크게 향상되지 않을 것이며 현재의 호스팅 아키텍처가 계속 잘 실행되는 것입니까?

  3. 내가 생각하지 못한 다른 옵션은 무엇입니까?

기억하십시오. 다른 도메인에서 모든 웹 사이트 (노드 또는 PHP)를 실행하고 있습니다. 나는 아직까지도 정교한 솔루션을 보지 못했지만 몇 가지 다른 사람들이 이와 같은 워크 플로우에 관심을 가질 것이라는 점에서 매우 흥미로운 질문이 될 것이라고 생각했다. (특히 git 통합과 함께!)

이 질문에 대한 추가 설명이 필요한지 물어보고 필요한 경우 수정할 것입니다.

미리 감사드립니다.

답변

0

확실히 Apache를 통해 노드 서버를 프록시하십시오. Apache가 정적 파일을 Node가 제공하는 것보다 더 빠르게 제공 할 수있을뿐만 아니라 병목 현상도별로 없습니다. 반대는 사실이 아닙니다. (비록 Nginx is definitely my preferred option.)

Apache Benchmark를 사용해보십시오!

$ ab -c 1000 -n 5000 http://127.0.0.1/ 

내 개인 번호는 다음과 같습니다

  • 22,281 요청/정적 Nginx의 파일
Nginx에를 통해 노드에 대한
  • 5,514 요청/노드에 대한 초
  • 4,729 요청/초 초

    훨씬 더 높은 것을 찾고 있다면, Haskell의 Warp는 약 12,000/sec를 얻습니다. :)

  • 0

    아마도 슈퍼 유저 권한없이 포트 80에서 노드를 실행할 수 없으며 노드 애플리케이션에 그러한 종류의 힘을주는 것은 좋은 생각이 아닙니다. 훨씬 더 안전한 아파치 또는 (또한 내 선호) nginx 80에서 듣고 요청을 따라 전달. (nginx는 소켓에 대해서도 더 우호적이며, 언젠가는 그들을 원할 것입니다.)

    내 dev에 박스 지금은 내가 아파치와 노드 애플 리케이션을위한 프록시를 nginx있어. 서버가 너무 많아서는 안되기 때문에 나는 말합니다.)