2010-08-23 8 views
2

비교적 간단한 (생각합니다) 유스 케이스가 있지만 다른 사람이이 예제를 찾지 못했습니다. 우리는 두 가지 다른 응용 프로그램 앞에서 캐시와 리버스 프록시로 Varnish를 사용하고 있으며 두 가지가 모두 비슷한 일을하기 때문에 두 가지 모두에 걸쳐 더 통일되도록하고 싶습니다. Varnish가 아래 표시된 URL을 다시 작성하는 데 도움이되기를 바랍니다. (가장 복잡한 그것은 두 개의 매개 변수를 결합하기 때문에)바니시로 URL 매개 변수를 다시 포맷 할 수 있습니까?

http://myapplication.com/products/?paginate=1:10 

이것은 단지 하나의 예이지만, :

http://myapplication.com/products/?startindex=1&endindex=10 

원하는 URL을 : 매김을위한

원래 응용 프로그램 URL은 (처음 10 개 항목을 얻을) 모든 경우에 매개 변수의 입력 값이 그대로 유지되므로 매개 변수 이름이 변경됩니다.

또 다른 예는 다음과 같습니다

http://myapplication.com/search/?query=something 

에 :

http://myapplication.com/search/?q=something 

사람이 니스 어떤 경험이 있습니까이가 어떻게 할 수 있을까?

감사합니다.

답변

5

분명히 할 수 있습니다. 대답은 regsub이 당신의 친구라는 것입니다. 예를 들어

:

if (req.url ~ "(.*)(id=)") { 
     set req.url = regsub(req.url, "(feeds/[a-zA-Z]*/)(.*)([\?|&])(id=)([a-zA-Z0-9]*)(.*)", "\1\2\3byGuid=\5\6"); 
} 

이 변환 들어오는 "ID"매개 변수 백엔드에 "byGuid"매개 변수로합니다. URL 문자열의 나머지 부분에도 많은 것들이 있지만 기본은 있습니다. 그래서 누구나 비슷한 것을하고 싶다면 이것은 좋은 출발점입니다.