2017-11-22 20 views
0

나는 nginx에서 proxy_pass 규칙을 구현했으며 일부 링크에서만 작동합니다. 내 규칙은 다음과 같습니다nginx 프록시 패스 URL 보존

server_name www.example.com 

location ~ /en/(.*)$ { 
     resolver 8.8.8.8; 
     proxy_pass http://www.destinyweb.en/$1; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header Host $host; 
    } 

내 목적은 "www.example.com/en/index.jsp"를 입력하고 proxy_pass는 "www.destinyweb.en/index.jsp에서"내 요청을 리디렉션합니다.

대상 웹의 링크가 "index.jsp"와 비슷하지만 링크가 "/index.jsp"(index.jsp 앞에 슬래시가 있음) 일 때 제대로 작동하지 않습니다. 링크 중 일부는 대상 파일 앞에 "/"가 있고 다른 파일에는없는 파일입니다.

웹 사이트의 내용이 같다

잘 작동 : 웹 사이트의 내용이 같은 경우

<a href="index.jsp">Hello</a> 

작동하지 않습니다

<a href="/index.jsp">Hello</a> 

당신 중 일부는 몇 가지 정규식을 알고 이 "/"구문 분석기?

감사합니다.

답변

0

location 정규식 일치에 /을 포함하고자합니다. 따라서 다음과 같이됩니다 :

location ~ ^/en(/.*)?$ { 

은 슬래시와 일치하거나 일치하지 않습니다. 또한 지금처럼 proxy_pass 줄을 수정 것 :

proxy_pass http://www.destinyweb.en$1; 

$ 1 일부터 포함하거나 원래 요청했던 것과 /을 포함하지 않을 것입니다.