Rails 배포 솔루션 중 하나는 Apache를 역방향 프록시로 사용하여 요청을 애플리케이션 서버(예: Phusion Passenger)로 전달하는 것입니다. 역방향 프록시 서버로서 Apache는 그 뒤에 있는 애플리케이션 서버와 어떻게 상호 작용합니까?
예를 들어 내 Apache는 포트 1080을 수신하고 프로세스 정보를 확인했습니다.
요청이 오면 먼저 Apache로 이동합니다. Apache는 요청을 처리하기 위해 이러한 프로세스에서 프로세스를 할당합니다(예: 프로세스 8391이 할당됨). 그러면 프로세스 8391은 무엇을 하게 될까요? 그는 이 요청을 후속 애플리케이션 서버(Phusion Passenger)로 전달합니까? 그렇다면 애플리케이션 서버에도 자체적인 독립 프로세스가 있습니까? 아니면 프로세스 8391을 응용 서버 프로세스로 간주하여 이 요청을 자체적으로 처리할 수 있습니까?
Apache는 그 뒤에 있는 애플리케이션 서버와 어떻게 상호 작용합니까?
이 질문을 오랫동안 보았지만 당시에는 대답하지 않았습니다. 이제 대답하겠습니다.
Ruby 언어에는 http 관련 API가 있으며 간단한 정적 파일 서버를 직접 작성할 수도 있습니다. 그리고 유사한 서비스를 제공하는 강력한 보석이 많이 있습니다.
Apache에서 PHP 언어를 실행하는 가장 일반적인 방법은 플러그인을 사용하는 것입니다. 즉, Apache는 PHP 파일 요청에 응답하도록 변경됩니다.
Rails나 Thin 등의 웹 서버를 이용해 서비스를 시작하는 것도 가능하지만, 브라우저와 개발자 모두 사용하기가 쉽지 않습니다.
역방향 프록시를 구성하면 Apache는 HTTP 클라이언트 역할을 하여 동일한 요청을 애플리케이션 서버에 보낸 다음 결과를 실제 클라이언트에 보냅니다.
아파치를 시작한 후에는 10~20개 이상의 프로세스가 있게 됩니다(구성에 따라 다름)
그런 다음 Apache가 요청을 받은 후 프로세스가 역방향 프록시의 조건을 충족하면 요청이 애플리케이션 서버로 전송됩니다
실제로 애플리케이션 서버에 직접 액세스할 수 있어야 합니다(방화벽 등이 없는 경우)
어쨌든 애플리케이션 서버는 요청을 받은 다음 다시 아파치에 응답을 보냅니다
그런 다음 아파치는 브라우저에 다시 응답을 보냅니다
그러나 이 프로세스 중에 응답의 HTML에서 URL 재작성을 구성해야 할 수도 있습니다