Nginx를 사용하여 하위 경로를 외부 호스트로 리디렉션 $1 break;

Nginx에서 서브 패스를 동일한 서브넷에있는 다른 서버로 리디렉션하는 매우 간단한 맵을 만들어야합니다.

  • Nginx 서버 : 192.168.0.2
  • Tomcat 서버 : 192.168.0.3:8443

이것을 서버 섹션에 넣으려고했습니다.

    location /tomcatapi/ {
        rewrite /tomcatapi/(.*) $1 break;
        proxy_pass http://192.168.0.3:8443;
    }

하지만 http://www.myservice.com/tomcatapi/ 에 액세스 할 수있는 모든 것은 500 오류 페이지이며 nginx 로그 파일에는이 오류가 있습니다.

    the rewritten URI has a zero length

이 conf에서 내가 무엇을 놓치고 있습니까?



답변

다시 쓰기 줄을 보자.

rewrite /tomcatapi/(.*) $1 break;

에 괄호로 묶인 비트 (예 : 뒤에 /tomcatapi/나오는 모든 것 )를 $1다시 작성한 URI의 유일한 내용으로 사용합니다.

귀하의 예에서, 이후에는 아무것도 /tomcatapi/없으므로 재 작성은 비워집니다. 이것은 nginx가 신음하는 것입니다.

다시 쓰기 규칙을 다음으로 변경하면

rewrite /tomcatapi/(.*) /$1 break;

그런 다음 항상 /다시 쓰기 출력 에서 끝납니다 .