2009-05-28 3 views
3

다른 서버 또는 IP로 리디렉션하지 않고 mod_proxy를 사용하여 역방향 프록시를 설정할 수 있습니까? 이것은 가상 호스트 환경이됩니다. 이 작업을 수행하려는 이유는 mod_proxy가 클라이언트의 브라우저와의 통신을 처리하여 클라이언트의 브라우저에 연결하는 대신 다음 요청을 처리 할 웹 서버 프로세스를 자유롭게하기 위해서입니다. MPM Prefork와 함께 mod_php와 같은 언어 모듈을 사용할 때 특히 중요합니다. 달성하고자하는 흐름은 다음과 같습니다. 1. 트래픽은 포트 80에서 www.mydomain.com으로 확인됩니다. 2. 프록시가 웹 서버에 요청을 보냅니다. 3. 웹 서버는 응답을 프록시로 다시 보내고 프록시와의 연결을 끊습니다. 4. 프록시가 클라이언트 브라우저에 피드합니다. 그 일단리디렉션하지 않고 mod_proxy를 사용하여 역방향 프록시를 설정할 수 있습니까?

내가 같은 IP 주소 만 포트 (81)와 같은 서버에 nginx에하는 프록시 이미지 요청의 nginx를 추가 할 노력하고 있습니다. 나는 프록시를 처리하는 nginx와 FCGI를 원한다. 내 표준 아파치 mod_rewrite와 .htaccess가 작동하기를 원한다.

감사합니다.

+0

내가 proxypassreverse 당신이 누락 된 부분이라고 생각이 두 모듈로드를 사용합니다. – DevelopingChris

답변

3

다른 포트의 로컬 호스트로 간단히 리디렉션 하시겠습니까? 포트 8080에서 응용 프로그램을 호스트하고 요청을 전달 mod_proxy를 사용 : 당신이 요청을 처리하는 응용 프로그램 서버가 있고 단일 시스템에 결합 된 여러 인스턴스를 원하는 경우

ProxyPass /foo http://localhost:8080/foo 
ProxyPassReverse /foo http://localhost:8080/foo 

이 도움이 될 수 있습니다. 응용 프로그램 서버 당 하나의 포트를 사용할 수 있습니다. 그것은 정말 그냥 직접 mod_php를 사용하는 것보다 빠를 것입니다 경우

모르겠어요. 프록시 요청은 또한 오버 헤드를 추가합니다.

+0

그게 완벽하다고 생각합니다. 아파치가 여러 포트에서 수신 대기한다고 생각하지 않았습니다. 로드를 완화할지 여부는 mod_php 프로세스가 실제로 브라우저에 먹이를 보내는 데 걸리는 시간과 지속 가능한 영향이 무엇인지에 따라 다릅니다. 요청의 대부분이 소켓 버퍼에 들어간다면, 아파치는 어쨌든 "베이비 시팅 (baby sitting)"통신을하지 않는다. 커널은 그렇다. 프록시는 또한 정적 컨텐츠에 대해 nginx를 시도 할 수있게합니다. 그게 도움이 될지도 몰라. PHP 캐시가 잘 작동합니다. 이러한 조정을 거친 후에는 lingerd, 버퍼, CPU 및 RAM이 다운됩니다. – user113468

0

당신이 또한

LoadModule proxy_module bin/mod_proxy.so 
LoadModule proxy_http_module bin/mod_proxy_http.so 

ProxyPass /TeamCity http://localhost/TeamCity 
ProxyPassReverse /TeamCity http://localhost/TeamCity 
관련 문제