다음 패턴을 얻으려고합니다. 몇 가지 사전 정의 된 호스트로 전환 할 수 있도록 클라이언트 측 코드에서 동적 경로를 지정해야합니다./fwd/url에 별칭을 추가하여 이러한 호스트를 매핑합니다. 별명은 다음과 같이의 nginx에 실제 서버에 매핑 : 지도와 정규식을 사용하는 동적 proxy_pass
map $uri $repoUrl {
default invalid;
~^/fwd/foo/.* http://foo.domain.nl/;
~^/fwd/bar/.* http://bar.domain.nl/;
}
그런 다음 서버 설정 부분에서 나는 FWD 및 적용 매핑 된 별칭 값로 시작하는 URL을 잡을 수있어. 별칭이 URL에 추가되어야하는 후에 URL의 나머지 부분. 나는 이것을 테스트하는 경우
location /fwd/(\w+)/(.*)$ {
add_header X-FwdHost "$repoUrl$2";
add_header Access-Control-Allow-Origin "*";
proxy_pass "$repoUrl$2";
proxy_redirect off;
access_log on;
}
:
curl -i http://localhost:8080/fwd/foo/something/else
내가 얻을 :
X-FwdHost: http://foo.domain.nl/
그러나 정규 표현식에서 테스트 결과는 내가 얻을 때 :
$1: foo
$2: something/else
그래서 전체 그것은 작동하는 것 같습니다. 정규식은 괜찮은 것처럼 보이지만 하나의 문자열로 연결할 수는 없습니까? 어떤 아이디어를 얻거나 더 쉽게/더 좋은 방법으로 같은 것을 성취 할 수 있습니까?
[편집]
나는 앞으로라는 이름의 쿼리 매개 변수를 사용하여이 작업을 수행 할 수있는 가능성이 훨씬 쉬운 방법을 발견했다. 먼저에 대한 권리 호스트 쿼리 매개 변수를 매핑 :map $arg_forward $repo_forward {
default http://invalid_repo_forward/;
foo http://foo.domain.nl/;
bar http://bar.domain.nl/;
}
는 다음 경로에있는 매개 변수를 사용하여 전달한다 :
location /fwd/ {
add_header X-FwdHost $repo_forward;
add_header Access-Control-Allow-Origin "*";
proxy_pass $repo_forward;
proxy_redirect off;
access_log on;
}
내가 기대하고 URL처럼 :
http://localhost:8080/fwd/?forward=foo
가 발생할에 :
http://foo.domain.nl/
...하지만 여전히 작동하지 않습니다. 나는 404를 돌려 받는다. 내가 뭘 놓치고 있니?
가능성은 당신이 솔루션의 "전체"사본을하시기 바랍니다 게시 할 수 있습니다. 나는 (내가 할 수있는 한) 이것을 계속하고 있지만 여전히 404를 얻는다. Alstublieft. – Guy