2011-04-12 1 views
0

콘텐츠 요청을 최소화하기 위해 임시 http 캐시로 nginx를 사용하려고합니다. 다음http_ 302/301 응답을 proxy_pass 서버가 수신 할 때 헤더 대신 실제 내용을 nginx (프록시) 캐시하는 방법은 무엇입니까?

rewrite  /([^/]+\.jpg) /index.php?file=$1 break; 
proxy_pass http://www.phpserver.com; 

PHP 스크립트 (즉 http://www.phpserver.com/index.php 될 것이다) : 내가 직접 위치에 고정 proxy_pass 매개 변수를 사용할 수 없습니다 대신 그 중 내가 PHP 스크립트로 재 작성을 사용하므로 내 콘텐츠를 여러 서버에 HTTP 코드 301을 사용하여 실제 파일 위치 (예 : http://www.contentserver1.com/filepath/file.jpg)로 리디렉션됩니다.

문제는 nginx가 실제 콘텐츠를 검색, 캐싱 및 반환하는 대신 리디렉션 헤더를 반환한다는 것입니다.

그래서 헤더를 캐시하는 대신 실제 서버에서 내용을 가져 오려면 어떻게해야합니까?

답변

0

Nginx는 프록시로만 작동 할 수 있습니다. 그것은 당신이 응용 프로그램 (사이트)의 논리에 대해 아무것도 모르는, 그냥 프록시 요청이며, 캐시 응답을 넣을 수 있습니다.

이 스키마를 작동 시키려면 nginx에서 rewrite 섹션을 제거하고이 로직을 phpserver.com으로 옮겨야합니다. phpserver는이 파일을 다운로드 받아 nginx로 출력해야합니다. nginx는 매우 어려운 작업이라 할지라도이 응답을 캐싱하고 다음 요청이 수신되면 nginx는 그의 캐시에서 직접 응답을 보냅니다.

+0

나는 프록시 개념을 이해하지만, 전체적인 점은이 경우 프록시가되는 nginx이다. 이 솔루션은 나를 위해 작동하지 않지만 실제 응용 프로그램과 함께이 nginx 프록시의 여러 인스턴스를 사용하고 다른 단일 프록시가 필요하지 않습니다. 그래서 nginx가이 매우 간단한 논리를 이해하게 만드는데 관심이 있습니다. 나 또한 동일한 목적을 위해 upstream 명령어를 사용하려고 시도했지만 404 failover가 적절하게 시작되지 않았다. – nikoladd

+0

업스트림 풀을 통해 문제를 해결했습니다. 답변 주셔서 감사합니다. – nikoladd

+0

@nikoladd 어떻게 해결 했습니까? – Vad

관련 문제